! function (e, t) {
    "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.COS = t() : e.COS = t()
}(this, function () {
    return function (e) {
        function t(r) {
            if (n[r]) return n[r].exports;
            var o = n[r] = {
                i: r,
                l: !1,
                exports: {}
            };
            return e[r].call(o.exports, o, o.exports, t), o.l = !0, o.exports
        }
        var n = {};
        return t.m = e, t.c = n, t.i = function (e) {
            return e
        }, t.d = function (e, n, r) {
            t.o(e, n) || Object.defineProperty(e, n, {
                configurable: !1,
                enumerable: !0,
                get: r
            })
        }, t.n = function (e) {
            var n = e && e.__esModule ? function () {
                return e.default
            } : function () {
                return e
            };
            return t.d(n, "a", n), n
        }, t.o = function (e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        }, t.p = "D:\\code\\cos-wx-sdk-v5\\demo\\lib", t(t.s = 5)
    }([function (e, t, n) {
        "use strict";

        function r(e) {
            return encodeURIComponent(e).replace(/!/g, "%21").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/\*/g, "%2A")
        }

        function o(e) {
            return u(e, function (e) {
                return "object" == typeof e ? o(e) : e
            })
        }

        function i(e, t) {
            return c(t, function (n, r) {
                e[r] = t[r]
            }), e
        }

        function a(e) {
            return e instanceof Array
        }

        function s(e, t) {
            for (var n = !1, r = 0; r < e.length; r++)
                if (t === e[r]) {
                    n = !0;
                    break
                } return n
        }

        function c(e, t) {
            for (var n in e) e.hasOwnProperty(n) && t(e[n], n)
        }

        function u(e, t) {
            var n = a(e) ? [] : {};
            for (var r in e) e.hasOwnProperty(r) && (n[r] = t(e[r], r));
            return n
        }

        function l(e, t) {
            var n = a(e),
                r = n ? [] : {};
            for (var o in e) e.hasOwnProperty(o) && t(e[o], o) && (n ? r.push(e[o]) : r[o] = e[o]);
            return r
        }
        var d = n(8),
            f = n(6),
            h = n(10),
            p = n(7),
            m = n(1),
            g = function (e) {
                e = e || {};
                var t = e.SecretId,
                    n = e.SecretKey,
                    i = (e.method || e.Method || "get").toLowerCase(),
                    a = o(e.Query || e.params || {}),
                    s = o(e.Headers || e.headers || {}),
                    c = e.Pathname || "/" + (e.Key || "");
                if (!t) return console.error("missing param SecretId");
                if (!n) return console.error("missing param SecretKey");
                var u = function (e) {
                        var t = [];
                        for (var n in e) e.hasOwnProperty(n) && t.push(n);
                        return t.sort(function (e, t) {
                            return e = e.toLowerCase(), t = t.toLowerCase(), e === t ? 0 : e > t ? 1 : -1
                        })
                    },
                    l = function (e) {
                        var t, n, o, i = [],
                            a = u(e);
                        for (t = 0; t < a.length; t++) n = a[t], o = void 0 === e[n] || null === e[n] ? "" : "" + e[n], n = n.toLowerCase(), n = r(n), o = r(o) || "", i.push(n + "=" + o);
                        return i.join("&")
                    },
                    d = Math.round(w(e.SystemClockOffset) / 1e3) - 1,
                    h = d,
                    p = e.Expires || e.expires;
                h += void 0 === p ? 900 : 1 * p || 0;
                var m = t,
                    g = d + ";" + h,
                    y = d + ";" + h,
                    C = u(s).join(";").toLowerCase(),
                    v = u(a).join(";").toLowerCase(),
                    x = f.HmacSHA1(y, n).toString(),
                    k = [i, c, l(a), l(s), ""].join("\n"),
                    S = ["sha1", g, f.SHA1(k).toString(), ""].join("\n");
                return ["q-sign-algorithm=sha1", "q-ak=" + m, "q-sign-time=" + g, "q-key-time=" + y, "q-header-list=" + C, "q-url-param-list=" + v, "q-signature=" + f.HmacSHA1(S, x).toString()].join("&")
            },
            y = function () {},
            C = function (e) {
                var t = {};
                for (var n in e) e.hasOwnProperty(n) && void 0 !== e[n] && null !== e[n] && (t[n] = e[n]);
                return t
            },
            v = function (e, t) {
                var n, r = new FileReader;
                FileReader.prototype.readAsBinaryString ? (n = FileReader.prototype.readAsBinaryString, r.onload = function () {
                    t(this.result)
                }) : FileReader.prototype.readAsArrayBuffer ? n = function (e) {
                    var n = "",
                        r = new FileReader;
                    r.onload = function (e) {
                        for (var o = new Uint8Array(r.result), i = o.byteLength, a = 0; a < i; a++) n += String.fromCharCode(o[a]);
                        t(n)
                    }, r.readAsArrayBuffer(e)
                } : console.error("FileReader not support readAsBinaryString"), n.call(r, e)
            },
            x = function (e, t) {
                v(e, function (e) {
                    var n = d(e, !0);
                    t(null, n)
                })
            },
            k = function (e) {
                var t, n, r, o = "";
                for (t = 0, n = e.length / 2; t < n; t++) r = parseInt(e[2 * t] + e[2 * t + 1], 16), o += String.fromCharCode(r);
                return m.btoa(o)
            },
            S = function () {
                var e = function () {
                    return (65536 * (1 + Math.random()) | 0).toString(16).substring(1)
                };
                return e() + e() + "-" + e() + "-" + e() + "-" + e() + "-" + e() + e() + e()
            },
            A = function (e, t) {
                var n = t.Bucket,
                    r = t.Region,
                    o = t.Key;
                if (e.indexOf("Bucket") > -1 || "deleteMultipleObject" === e || "multipartList" === e || "listObjectVersions" === e) {
                    if (!n) return "Bucket";
                    if (!r) return "Region"
                } else if (e.indexOf("Object") > -1 || e.indexOf("multipart") > -1 || "sliceUploadFile" === e || "abortUploadTask" === e) {
                    if (!n) return "Bucket";
                    if (!r) return "Region";
                    if (!o) return "Key"
                }
                return !1
            },
            b = function (e, t) {
                if (t = i({}, t), "getAuth" !== e && "getV4Auth" !== e && "getObjectUrl" !== e) {
                    var n = t.Headers || {};
                    if (t && "object" == typeof t) {
                        ! function () {
                            for (var e in t) t.hasOwnProperty(e) && e.indexOf("x-cos-") > -1 && (n[e] = t[e])
                        }();
                        var r = {
                            "x-cos-mfa": "MFA",
                            "Content-MD5": "ContentMD5",
                            "Content-Length": "ContentLength",
                            "Content-Type": "ContentType",
                            Expect: "Expect",
                            Expires: "Expires",
                            "Cache-Control": "CacheControl",
                            "Content-Disposition": "ContentDisposition",
                            "Content-Encoding": "ContentEncoding",
                            Range: "Range",
                            "If-Modified-Since": "IfModifiedSince",
                            "If-Unmodified-Since": "IfUnmodifiedSince",
                            "If-Match": "IfMatch",
                            "If-None-Match": "IfNoneMatch",
                            "x-cos-copy-source": "CopySource",
                            "x-cos-copy-source-Range": "CopySourceRange",
                            "x-cos-metadata-directive": "MetadataDirective",
                            "x-cos-copy-source-If-Modified-Since": "CopySourceIfModifiedSince",
                            "x-cos-copy-source-If-Unmodified-Since": "CopySourceIfUnmodifiedSince",
                            "x-cos-copy-source-If-Match": "CopySourceIfMatch",
                            "x-cos-copy-source-If-None-Match": "CopySourceIfNoneMatch",
                            "x-cos-acl": "ACL",
                            "x-cos-grant-read": "GrantRead",
                            "x-cos-grant-write": "GrantWrite",
                            "x-cos-grant-full-control": "GrantFullControl",
                            "x-cos-grant-read-acp": "GrantReadAcp",
                            "x-cos-grant-write-acp": "GrantWriteAcp",
                            "x-cos-storage-class": "StorageClass",
                            "x-cos-server-side-encryption-customer-algorithm": "SSECustomerAlgorithm",
                            "x-cos-server-side-encryption-customer-key": "SSECustomerKey",
                            "x-cos-server-side-encryption-customer-key-MD5": "SSECustomerKeyMD5",
                            "x-cos-server-side-encryption": "ServerSideEncryption",
                            "x-cos-server-side-encryption-cos-kms-key-id": "SSEKMSKeyId",
                            "x-cos-server-side-encryption-context": "SSEContext"
                        };
                        _.each(r, function (e, r) {
                            void 0 !== t[e] && (n[r] = t[e])
                        }), t.Headers = C(n)
                    }
                }
                return t
            },
            R = function (e, t) {
                return function (n, r) {
                    "function" == typeof n && (r = n, n = {}), n = b(e, n);
                    var o = function (e) {
                            return e && e.headers && (e.headers["x-cos-version-id"] && (e.VersionId = e.headers["x-cos-version-id"]), e.headers["x-cos-delete-marker"] && (e.DeleteMarker = e.headers["x-cos-delete-marker"])), e
                        },
                        i = function (e, t) {
                            r && r(o(e), o(t))
                        };
                    if ("getService" !== e && "abortUploadTask" !== e) {
                        var a;
                        if (a = A(e, n)) return void i({
                            error: "missing param " + a
                        });
                        if (n.Region) {
                            if (n.Region.indexOf("cos.") > -1) return void i({
                                error: 'param Region should not be start with "cos."'
                            });
                            if (!/^([a-z\d-]+)$/.test(n.Region)) return void i({
                                error: "Region format error."
                            });
                            this.options.CompatibilityMode || -1 !== n.Region.indexOf("-") || "yfb" === n.Region || "default" === n.Region || console.warn("warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224")
                        }
                        if (n.Bucket) {
                            if (!/^([a-z\d-]+)-(\d+)$/.test(n.Bucket))
                                if (n.AppId) n.Bucket = n.Bucket + "-" + n.AppId;
                                else {
                                    if (!this.options.AppId) return void i({
                                        error: 'Bucket should format as "test-1250000000".'
                                    });
                                    n.Bucket = n.Bucket + "-" + this.options.AppId
                                } n.AppId && (console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g Bucket:"test-1250000000" ).'), delete n.AppId)
                        }
                    }
                    var s = t.call(this, n, i);
                    if ("getAuth" === e || "getObjectUrl" === e) return s
                }
            },
            T = function (e, t) {
                function n() {
                    clearTimeout(o), o = 0, r = Date.now();
                    var n, i = Math.max(0, Math.round((s - a) / ((r - c) / 1e3) * 100) / 100);
                    n = 0 === s && 0 === e ? 1 : Math.round(s / e * 100) / 100 || 0, c = r, a = s;
                    try {
                        t({
                            loaded: s,
                            total: e,
                            speed: i,
                            percent: n
                        })
                    } catch (e) {}
                }
                if (!t || "function" != typeof t) return y;
                var r, o, i = this,
                    a = 0,
                    s = 0,
                    c = Date.now();
                return function (t, r) {
                    if (t && (s = t.loaded, e = t.total), Date.now() - c > i.options.ProgressInterval || r) n();
                    else {
                        if (o) return;
                        o = setTimeout(n, i.options.ProgressInterval)
                    }
                }
            },
            E = function (e, t, n) {
                var r;
                if ("string" == typeof t.Body && (t.Body = new Blob([t.Body], {
                        type: "text/plain"
                    })), !t.Body || !(t.Body instanceof Blob || "[object File]" === t.Body.toString() || "[object Blob]" === t.Body.toString())) return void n({
                    error: "params body format error, Only allow File|Blob|String."
                });
                r = t.Body.size, t.ContentLength = r, n(null, r)
            },
            w = function (e) {
                return Date.now() + (e || 0)
            },
            _ = {
                noop: y,
                formatParams: b,
                apiWrapper: R,
                xml2json: h,
                json2xml: p,
                md5: d,
                clearKey: C,
                getFileMd5: x,
                binaryBase64: k,
                extend: i,
                isArray: a,
                isInArray: s,
                each: c,
                map: u,
                filter: l,
                clone: o,
                uuid: S,
                camSafeUrlEncode: r,
                throttleOnProgress: T,
                getFileSize: E,
                getSkewTime: w,
                getAuth: g,
                isBrowser: !0
            };
        _.fileSlice = function (e, t, n) {
            return e.slice ? e.slice(t, n) : e.mozSlice ? e.mozSlice(t, n) : e.webkitSlice ? e.webkitSlice(t, n) : void 0
        }, _.getFileUUID = function (e, t) {
            return e.name && e.size && e.lastModifiedDate && t ? _.md5([e.name, e.size, e.lastModifiedDate, t].join("::")) : null
        }, _.getBodyMd5 = function (e, t, n) {
            n = n || y, e && "string" == typeof t ? n(_.md5(t, !0)) : n()
        }, e.exports = _
    }, function (e, t) {
        var n = function (e) {
            e = e || {};
            var t, n = e.Base64,
                r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
                o = function (e) {
                    for (var t = {}, n = 0, r = e.length; n < r; n++) t[e.charAt(n)] = n;
                    return t
                }(r),
                i = String.fromCharCode,
                a = function (e) {
                    if (e.length < 2) {
                        var t = e.charCodeAt(0);
                        return t < 128 ? e : t < 2048 ? i(192 | t >>> 6) + i(128 | 63 & t) : i(224 | t >>> 12 & 15) + i(128 | t >>> 6 & 63) + i(128 | 63 & t)
                    }
                    var t = 65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320);
                    return i(240 | t >>> 18 & 7) + i(128 | t >>> 12 & 63) + i(128 | t >>> 6 & 63) + i(128 | 63 & t)
                },
                s = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,
                c = function (e) {
                    return e.replace(s, a)
                },
                u = function (e) {
                    var t = [0, 2, 1][e.length % 3],
                        n = e.charCodeAt(0) << 16 | (e.length > 1 ? e.charCodeAt(1) : 0) << 8 | (e.length > 2 ? e.charCodeAt(2) : 0);
                    return [r.charAt(n >>> 18), r.charAt(n >>> 12 & 63), t >= 2 ? "=" : r.charAt(n >>> 6 & 63), t >= 1 ? "=" : r.charAt(63 & n)].join("")
                },
                l = e.btoa ? function (t) {
                    return e.btoa(t)
                } : function (e) {
                    return e.replace(/[\s\S]{1,3}/g, u)
                },
                d = t ? function (e) {
                    return (e.constructor === t.constructor ? e : new t(e)).toString("base64")
                } : function (e) {
                    return l(c(e))
                },
                f = function (e, t) {
                    return t ? d(String(e)).replace(/[+\/]/g, function (e) {
                        return "+" == e ? "-" : "_"
                    }).replace(/=/g, "") : d(String(e))
                },
                h = function (e) {
                    return f(e, !0)
                },
                p = new RegExp(["[À-ß][-¿]", "[à-ï][-¿]{2}", "[ð-÷][-¿]{3}"].join("|"), "g"),
                m = function (e) {
                    switch (e.length) {
                        case 4:
                            var t = (7 & e.charCodeAt(0)) << 18 | (63 & e.charCodeAt(1)) << 12 | (63 & e.charCodeAt(2)) << 6 | 63 & e.charCodeAt(3),
                                n = t - 65536;
                            return i(55296 + (n >>> 10)) + i(56320 + (1023 & n));
                        case 3:
                            return i((15 & e.charCodeAt(0)) << 12 | (63 & e.charCodeAt(1)) << 6 | 63 & e.charCodeAt(2));
                        default:
                            return i((31 & e.charCodeAt(0)) << 6 | 63 & e.charCodeAt(1))
                    }
                },
                g = function (e) {
                    return e.replace(p, m)
                },
                y = function (e) {
                    var t = e.length,
                        n = t % 4,
                        r = (t > 0 ? o[e.charAt(0)] << 18 : 0) | (t > 1 ? o[e.charAt(1)] << 12 : 0) | (t > 2 ? o[e.charAt(2)] << 6 : 0) | (t > 3 ? o[e.charAt(3)] : 0),
                        a = [i(r >>> 16), i(r >>> 8 & 255), i(255 & r)];
                    return a.length -= [0, 0, 2, 1][n], a.join("")
                },
                C = e.atob ? function (t) {
                    return e.atob(t)
                } : function (e) {
                    return e.replace(/[\s\S]{1,4}/g, y)
                },
                v = t ? function (e) {
                    return (e.constructor === t.constructor ? e : new t(e, "base64")).toString()
                } : function (e) {
                    return g(C(e))
                },
                x = function (e) {
                    return v(String(e).replace(/[-_]/g, function (e) {
                        return "-" == e ? "+" : "/"
                    }).replace(/[^A-Za-z0-9\+\/]/g, ""))
                };
            return {
                VERSION: "2.1.9",
                atob: C,
                btoa: l,
                fromBase64: x,
                toBase64: f,
                utob: c,
                encode: f,
                encodeURI: h,
                btou: g,
                decode: x,
                noConflict: function () {
                    var t = e.Base64;
                    return e.Base64 = n, t
                }
            }
        }();
        e.exports = n
    }, function (e, t) {
        function n(e, t) {
            for (var n in e) t[n] = e[n]
        }

        function r(e, t) {
            function r() {}
            var o = e.prototype;
            if (Object.create) {
                var i = Object.create(t.prototype);
                o.__proto__ = i
            }
            o instanceof t || (r.prototype = t.prototype, r = new r, n(o, r), e.prototype = o = r), o.constructor != e && ("function" != typeof e && console.error("unknow Class:" + e), o.constructor = e)
        }

        function o(e, t) {
            if (t instanceof Error) var n = t;
            else n = this, Error.call(this, oe[e]), this.message = oe[e], Error.captureStackTrace && Error.captureStackTrace(this, o);
            return n.code = e, t && (this.message = this.message + ": " + t), n
        }

        function i() {}

        function a(e, t) {
            this._node = e, this._refresh = t, s(this)
        }

        function s(e) {
            var t = e._node._inc || e._node.ownerDocument._inc;
            if (e._inc != t) {
                var r = e._refresh(e._node);
                K(e, "length", r.length), n(r, e), e._inc = t
            }
        }

        function c() {}

        function u(e, t) {
            for (var n = e.length; n--;)
                if (e[n] === t) return n
        }

        function l(e, t, n, r) {
            if (r ? t[u(t, r)] = n : t[t.length++] = n, e) {
                n.ownerElement = e;
                var o = e.ownerDocument;
                o && (r && C(o, e, r), y(o, e, n))
            }
        }

        function d(e, t, n) {
            var r = u(t, n);
            if (!(r >= 0)) throw o(ae, new Error(e.tagName + "@" + n));
            for (var i = t.length - 1; r < i;) t[r] = t[++r];
            if (t.length = i, e) {
                var a = e.ownerDocument;
                a && (C(a, e, n), n.ownerElement = null)
            }
        }

        function f(e) {
            if (this._features = {}, e)
                for (var t in e) this._features = e[t]
        }

        function h() {}

        function p(e) {
            return "<" == e && "&lt;" || ">" == e && "&gt;" || "&" == e && "&amp;" || '"' == e && "&quot;" || "&#" + e.charCodeAt() + ";"
        }

        function m(e, t) {
            if (t(e)) return !0;
            if (e = e.firstChild)
                do {
                    if (m(e, t)) return !0
                } while (e = e.nextSibling)
        }

        function g() {}

        function y(e, t, n) {
            e && e._inc++, "http://www.w3.org/2000/xmlns/" == n.namespaceURI && (t._nsMap[n.prefix ? n.localName : ""] = n.value)
        }

        function C(e, t, n, r) {
            e && e._inc++, "http://www.w3.org/2000/xmlns/" == n.namespaceURI && delete t._nsMap[n.prefix ? n.localName : ""]
        }

        function v(e, t, n) {
            if (e && e._inc) {
                e._inc++;
                var r = t.childNodes;
                if (n) r[r.length++] = n;
                else {
                    for (var o = t.firstChild, i = 0; o;) r[i++] = o, o = o.nextSibling;
                    r.length = i
                }
            }
        }

        function x(e, t) {
            var n = t.previousSibling,
                r = t.nextSibling;
            return n ? n.nextSibling = r : e.firstChild = r, r ? r.previousSibling = n : e.lastChild = n, v(e.ownerDocument, e), t
        }

        function k(e, t, n) {
            var r = t.parentNode;
            if (r && r.removeChild(t), t.nodeType === te) {
                var o = t.firstChild;
                if (null == o) return t;
                var i = t.lastChild
            } else o = i = t;
            var a = n ? n.previousSibling : e.lastChild;
            o.previousSibling = a, i.nextSibling = n, a ? a.nextSibling = o : e.firstChild = o, null == n ? e.lastChild = i : n.previousSibling = i;
            do {
                o.parentNode = e
            } while (o !== i && (o = o.nextSibling));
            return v(e.ownerDocument || e, e), t.nodeType == te && (t.firstChild = t.lastChild = null), t
        }

        function S(e, t) {
            var n = t.parentNode;
            if (n) {
                var r = e.lastChild;
                n.removeChild(t);
                var r = e.lastChild
            }
            var r = e.lastChild;
            return t.parentNode = e, t.previousSibling = r, t.nextSibling = null, r ? r.nextSibling = t : e.firstChild = t, e.lastChild = t, v(e.ownerDocument, e, t), t
        }

        function A() {
            this._nsMap = {}
        }

        function b() {}

        function R() {}

        function T() {}

        function E() {}

        function w() {}

        function _() {}

        function N() {}

        function B() {}

        function D() {}

        function O() {}

        function P() {}

        function I() {}

        function M(e, t) {
            var n = [],
                r = 9 == this.nodeType ? this.documentElement : this,
                o = r.prefix,
                i = r.namespaceURI;
            if (i && null == o) {
                var o = r.lookupPrefix(i);
                if (null == o) var a = [{
                    namespace: i,
                    prefix: null
                }]
            }
            return F(this, n, e, t, a), n.join("")
        }

        function L(e, t, n) {
            var r = e.prefix || "",
                o = e.namespaceURI;
            if (!r && !o) return !1;
            if ("xml" === r && "http://www.w3.org/XML/1998/namespace" === o || "http://www.w3.org/2000/xmlns/" == o) return !1;
            for (var i = n.length; i--;) {
                var a = n[i];
                if (a.prefix == r) return a.namespace != o
            }
            return !0
        }

        function F(e, t, n, r, o) {
            if (r) {
                if (!(e = r(e))) return;
                if ("string" == typeof e) return void t.push(e)
            }
            switch (e.nodeType) {
                case q:
                    o || (o = []);
                    var i = (o.length, e.attributes),
                        a = i.length,
                        s = e.firstChild,
                        c = e.tagName;
                    n = z === e.namespaceURI || n, t.push("<", c);
                    for (var u = 0; u < a; u++) {
                        var l = i.item(u);
                        "xmlns" == l.prefix ? o.push({
                            prefix: l.localName,
                            namespace: l.value
                        }) : "xmlns" == l.nodeName && o.push({
                            prefix: "",
                            namespace: l.value
                        })
                    }
                    for (var u = 0; u < a; u++) {
                        var l = i.item(u);
                        if (L(l, n, o)) {
                            var d = l.prefix || "",
                                f = l.namespaceURI,
                                h = d ? " xmlns:" + d : " xmlns";
                            t.push(h, '="', f, '"'), o.push({
                                prefix: d,
                                namespace: f
                            })
                        }
                        F(l, t, n, r, o)
                    }
                    if (L(e, n, o)) {
                        var d = e.prefix || "",
                            f = e.namespaceURI,
                            h = d ? " xmlns:" + d : " xmlns";
                        t.push(h, '="', f, '"'), o.push({
                            prefix: d,
                            namespace: f
                        })
                    }
                    if (s || n && !/^(?:meta|link|img|br|hr|input)$/i.test(c)) {
                        if (t.push(">"), n && /^script$/i.test(c))
                            for (; s;) s.data ? t.push(s.data) : F(s, t, n, r, o), s = s.nextSibling;
                        else
                            for (; s;) F(s, t, n, r, o), s = s.nextSibling;
                        t.push("</", c, ">")
                    } else t.push("/>");
                    return;
                case J:
                case te:
                    for (var s = e.firstChild; s;) F(s, t, n, r, o), s = s.nextSibling;
                    return;
                case V:
                    return t.push(" ", e.name, '="', e.value.replace(/[<&"]/g, p), '"');
                case X:
                    return t.push(e.data.replace(/[<&]/g, p));
                case $:
                    return t.push("<![CDATA[", e.data, "]]>");
                case Y:
                    return t.push("\x3c!--", e.data, "--\x3e");
                case ee:
                    var m = e.publicId,
                        g = e.systemId;
                    if (t.push("<!DOCTYPE ", e.name), m) t.push(' PUBLIC "', m), g && "." != g && t.push('" "', g), t.push('">');
                    else if (g && "." != g) t.push(' SYSTEM "', g, '">');
                    else {
                        var y = e.internalSubset;
                        y && t.push(" [", y, "]"), t.push(">")
                    }
                    return;
                case Z:
                    return t.push("<?", e.target, " ", e.data, "?>");
                case W:
                    return t.push("&", e.nodeName, ";");
                default:
                    t.push("??", e.nodeName)
            }
        }

        function U(e, t, n) {
            var r;
            switch (t.nodeType) {
                case q:
                    r = t.cloneNode(!1), r.ownerDocument = e;
                case te:
                    break;
                case V:
                    n = !0
            }
            if (r || (r = t.cloneNode(!1)), r.ownerDocument = e, r.parentNode = null, n)
                for (var o = t.firstChild; o;) r.appendChild(U(e, o, n)), o = o.nextSibling;
            return r
        }

        function j(e, t, n) {
            var r = new t.constructor;
            for (var o in t) {
                var a = t[o];
                "object" != typeof a && a != r[o] && (r[o] = a)
            }
            switch (t.childNodes && (r.childNodes = new i), r.ownerDocument = e, r.nodeType) {
                case q:
                    var s = t.attributes,
                        u = r.attributes = new c,
                        l = s.length;
                    u._ownerElement = r;
                    for (var d = 0; d < l; d++) r.setAttributeNode(j(e, s.item(d), !0));
                    break;
                case V:
                    n = !0
            }
            if (n)
                for (var f = t.firstChild; f;) r.appendChild(j(e, f, n)), f = f.nextSibling;
            return r
        }

        function K(e, t, n) {
            e[t] = n
        }

        function H(e) {
            switch (e.nodeType) {
                case q:
                case te:
                    var t = [];
                    for (e = e.firstChild; e;) 7 !== e.nodeType && 8 !== e.nodeType && t.push(H(e)), e = e.nextSibling;
                    return t.join("");
                default:
                    return e.nodeValue
            }
        }
        var z = "http://www.w3.org/1999/xhtml",
            G = {},
            q = G.ELEMENT_NODE = 1,
            V = G.ATTRIBUTE_NODE = 2,
            X = G.TEXT_NODE = 3,
            $ = G.CDATA_SECTION_NODE = 4,
            W = G.ENTITY_REFERENCE_NODE = 5,
            Q = G.ENTITY_NODE = 6,
            Z = G.PROCESSING_INSTRUCTION_NODE = 7,
            Y = G.COMMENT_NODE = 8,
            J = G.DOCUMENT_NODE = 9,
            ee = G.DOCUMENT_TYPE_NODE = 10,
            te = G.DOCUMENT_FRAGMENT_NODE = 11,
            ne = G.NOTATION_NODE = 12,
            re = {},
            oe = {},
            ie = (re.INDEX_SIZE_ERR = (oe[1] = "Index size error", 1), re.DOMSTRING_SIZE_ERR = (oe[2] = "DOMString size error", 2), re.HIERARCHY_REQUEST_ERR = (oe[3] = "Hierarchy request error", 3)),
            ae = (re.WRONG_DOCUMENT_ERR = (oe[4] = "Wrong document", 4), re.INVALID_CHARACTER_ERR = (oe[5] = "Invalid character", 5), re.NO_DATA_ALLOWED_ERR = (oe[6] = "No data allowed", 6), re.NO_MODIFICATION_ALLOWED_ERR = (oe[7] = "No modification allowed", 7), re.NOT_FOUND_ERR = (oe[8] = "Not found", 8)),
            se = (re.NOT_SUPPORTED_ERR = (oe[9] = "Not supported", 9), re.INUSE_ATTRIBUTE_ERR = (oe[10] = "Attribute in use", 10));
        re.INVALID_STATE_ERR = (oe[11] = "Invalid state", 11), re.SYNTAX_ERR = (oe[12] = "Syntax error", 12), re.INVALID_MODIFICATION_ERR = (oe[13] = "Invalid modification", 13), re.NAMESPACE_ERR = (oe[14] = "Invalid namespace", 14), re.INVALID_ACCESS_ERR = (oe[15] = "Invalid access", 15);
        o.prototype = Error.prototype, n(re, o), i.prototype = {
            length: 0,
            item: function (e) {
                return this[e] || null
            },
            toString: function (e, t) {
                for (var n = [], r = 0; r < this.length; r++) F(this[r], n, e, t);
                return n.join("")
            }
        }, a.prototype.item = function (e) {
            return s(this), this[e]
        }, r(a, i), c.prototype = {
            length: 0,
            item: i.prototype.item,
            getNamedItem: function (e) {
                for (var t = this.length; t--;) {
                    var n = this[t];
                    if (n.nodeName == e) return n
                }
            },
            setNamedItem: function (e) {
                var t = e.ownerElement;
                if (t && t != this._ownerElement) throw new o(se);
                var n = this.getNamedItem(e.nodeName);
                return l(this._ownerElement, this, e, n), n
            },
            setNamedItemNS: function (e) {
                var t, n = e.ownerElement;
                if (n && n != this._ownerElement) throw new o(se);
                return t = this.getNamedItemNS(e.namespaceURI, e.localName), l(this._ownerElement, this, e, t), t
            },
            removeNamedItem: function (e) {
                var t = this.getNamedItem(e);
                return d(this._ownerElement, this, t), t
            },
            removeNamedItemNS: function (e, t) {
                var n = this.getNamedItemNS(e, t);
                return d(this._ownerElement, this, n), n
            },
            getNamedItemNS: function (e, t) {
                for (var n = this.length; n--;) {
                    var r = this[n];
                    if (r.localName == t && r.namespaceURI == e) return r
                }
                return null
            }
        }, f.prototype = {
            hasFeature: function (e, t) {
                var n = this._features[e.toLowerCase()];
                return !(!n || t && !(t in n))
            },
            createDocument: function (e, t, n) {
                var r = new g;
                if (r.implementation = this, r.childNodes = new i, r.doctype = n, n && r.appendChild(n), t) {
                    var o = r.createElementNS(e, t);
                    r.appendChild(o)
                }
                return r
            },
            createDocumentType: function (e, t, n) {
                var r = new _;
                return r.name = e, r.nodeName = e, r.publicId = t, r.systemId = n, r
            }
        }, h.prototype = {
            firstChild: null,
            lastChild: null,
            previousSibling: null,
            nextSibling: null,
            attributes: null,
            parentNode: null,
            childNodes: null,
            ownerDocument: null,
            nodeValue: null,
            namespaceURI: null,
            prefix: null,
            localName: null,
            insertBefore: function (e, t) {
                return k(this, e, t)
            },
            replaceChild: function (e, t) {
                this.insertBefore(e, t), t && this.removeChild(t)
            },
            removeChild: function (e) {
                return x(this, e)
            },
            appendChild: function (e) {
                return this.insertBefore(e, null)
            },
            hasChildNodes: function () {
                return null != this.firstChild
            },
            cloneNode: function (e) {
                return j(this.ownerDocument || this, this, e)
            },
            normalize: function () {
                for (var e = this.firstChild; e;) {
                    var t = e.nextSibling;
                    t && t.nodeType == X && e.nodeType == X ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), e = t)
                }
            },
            isSupported: function (e, t) {
                return this.ownerDocument.implementation.hasFeature(e, t)
            },
            hasAttributes: function () {
                return this.attributes.length > 0
            },
            lookupPrefix: function (e) {
                for (var t = this; t;) {
                    var n = t._nsMap;
                    if (n)
                        for (var r in n)
                            if (n[r] == e) return r;
                    t = t.nodeType == V ? t.ownerDocument : t.parentNode
                }
                return null
            },
            lookupNamespaceURI: function (e) {
                for (var t = this; t;) {
                    var n = t._nsMap;
                    if (n && e in n) return n[e];
                    t = t.nodeType == V ? t.ownerDocument : t.parentNode
                }
                return null
            },
            isDefaultNamespace: function (e) {
                return null == this.lookupPrefix(e)
            }
        }, n(G, h), n(G, h.prototype), g.prototype = {
            nodeName: "#document",
            nodeType: J,
            doctype: null,
            documentElement: null,
            _inc: 1,
            insertBefore: function (e, t) {
                if (e.nodeType == te) {
                    for (var n = e.firstChild; n;) {
                        var r = n.nextSibling;
                        this.insertBefore(n, t), n = r
                    }
                    return e
                }
                return null == this.documentElement && e.nodeType == q && (this.documentElement = e), k(this, e, t), e.ownerDocument = this, e
            },
            removeChild: function (e) {
                return this.documentElement == e && (this.documentElement = null), x(this, e)
            },
            importNode: function (e, t) {
                return U(this, e, t)
            },
            getElementById: function (e) {
                var t = null;
                return m(this.documentElement, function (n) {
                    if (n.nodeType == q && n.getAttribute("id") == e) return t = n, !0
                }), t
            },
            createElement: function (e) {
                var t = new A;
                return t.ownerDocument = this, t.nodeName = e, t.tagName = e, t.childNodes = new i, (t.attributes = new c)._ownerElement = t, t
            },
            createDocumentFragment: function () {
                var e = new O;
                return e.ownerDocument = this, e.childNodes = new i, e
            },
            createTextNode: function (e) {
                var t = new T;
                return t.ownerDocument = this, t.appendData(e), t
            },
            createComment: function (e) {
                var t = new E;
                return t.ownerDocument = this, t.appendData(e), t
            },
            createCDATASection: function (e) {
                var t = new w;
                return t.ownerDocument = this, t.appendData(e), t
            },
            createProcessingInstruction: function (e, t) {
                var n = new P;
                return n.ownerDocument = this, n.tagName = n.target = e, n.nodeValue = n.data = t, n
            },
            createAttribute: function (e) {
                var t = new b;
                return t.ownerDocument = this, t.name = e, t.nodeName = e, t.localName = e, t.specified = !0, t
            },
            createEntityReference: function (e) {
                var t = new D;
                return t.ownerDocument = this, t.nodeName = e, t
            },
            createElementNS: function (e, t) {
                var n = new A,
                    r = t.split(":"),
                    o = n.attributes = new c;
                return n.childNodes = new i, n.ownerDocument = this, n.nodeName = t, n.tagName = t, n.namespaceURI = e, 2 == r.length ? (n.prefix = r[0], n.localName = r[1]) : n.localName = t, o._ownerElement = n, n
            },
            createAttributeNS: function (e, t) {
                var n = new b,
                    r = t.split(":");
                return n.ownerDocument = this, n.nodeName = t, n.name = t, n.namespaceURI = e, n.specified = !0, 2 == r.length ? (n.prefix = r[0], n.localName = r[1]) : n.localName = t, n
            }
        }, r(g, h), A.prototype = {
            nodeType: q,
            hasAttribute: function (e) {
                return null != this.getAttributeNode(e)
            },
            getAttribute: function (e) {
                var t = this.getAttributeNode(e);
                return t && t.value || ""
            },
            getAttributeNode: function (e) {
                return this.attributes.getNamedItem(e)
            },
            setAttribute: function (e, t) {
                var n = this.ownerDocument.createAttribute(e);
                n.value = n.nodeValue = "" + t, this.setAttributeNode(n)
            },
            removeAttribute: function (e) {
                var t = this.getAttributeNode(e);
                t && this.removeAttributeNode(t)
            },
            appendChild: function (e) {
                return e.nodeType === te ? this.insertBefore(e, null) : S(this, e)
            },
            setAttributeNode: function (e) {
                return this.attributes.setNamedItem(e)
            },
            setAttributeNodeNS: function (e) {
                return this.attributes.setNamedItemNS(e)
            },
            removeAttributeNode: function (e) {
                return this.attributes.removeNamedItem(e.nodeName)
            },
            removeAttributeNS: function (e, t) {
                var n = this.getAttributeNodeNS(e, t);
                n && this.removeAttributeNode(n)
            },
            hasAttributeNS: function (e, t) {
                return null != this.getAttributeNodeNS(e, t)
            },
            getAttributeNS: function (e, t) {
                var n = this.getAttributeNodeNS(e, t);
                return n && n.value || ""
            },
            setAttributeNS: function (e, t, n) {
                var r = this.ownerDocument.createAttributeNS(e, t);
                r.value = r.nodeValue = "" + n, this.setAttributeNode(r)
            },
            getAttributeNodeNS: function (e, t) {
                return this.attributes.getNamedItemNS(e, t)
            },
            getElementsByTagName: function (e) {
                return new a(this, function (t) {
                    var n = [];
                    return m(t, function (r) {
                        r === t || r.nodeType != q || "*" !== e && r.tagName != e || n.push(r)
                    }), n
                })
            },
            getElementsByTagNameNS: function (e, t) {
                return new a(this, function (n) {
                    var r = [];
                    return m(n, function (o) {
                        o === n || o.nodeType !== q || "*" !== e && o.namespaceURI !== e || "*" !== t && o.localName != t || r.push(o)
                    }), r
                })
            }
        }, g.prototype.getElementsByTagName = A.prototype.getElementsByTagName, g.prototype.getElementsByTagNameNS = A.prototype.getElementsByTagNameNS, r(A, h), b.prototype.nodeType = V, r(b, h), R.prototype = {
            data: "",
            substringData: function (e, t) {
                return this.data.substring(e, e + t)
            },
            appendData: function (e) {
                e = this.data + e, this.nodeValue = this.data = e, this.length = e.length
            },
            insertData: function (e, t) {
                this.replaceData(e, 0, t)
            },
            appendChild: function (e) {
                throw new Error(oe[ie])
            },
            deleteData: function (e, t) {
                this.replaceData(e, t, "")
            },
            replaceData: function (e, t, n) {
                n = this.data.substring(0, e) + n + this.data.substring(e + t), this.nodeValue = this.data = n, this.length = n.length
            }
        }, r(R, h), T.prototype = {
            nodeName: "#text",
            nodeType: X,
            splitText: function (e) {
                var t = this.data,
                    n = t.substring(e);
                t = t.substring(0, e), this.data = this.nodeValue = t, this.length = t.length;
                var r = this.ownerDocument.createTextNode(n);
                return this.parentNode && this.parentNode.insertBefore(r, this.nextSibling), r
            }
        }, r(T, R), E.prototype = {
            nodeName: "#comment",
            nodeType: Y
        }, r(E, R), w.prototype = {
            nodeName: "#cdata-section",
            nodeType: $
        }, r(w, R), _.prototype.nodeType = ee, r(_, h), N.prototype.nodeType = ne, r(N, h), B.prototype.nodeType = Q, r(B, h), D.prototype.nodeType = W, r(D, h), O.prototype.nodeName = "#document-fragment", O.prototype.nodeType = te, r(O, h), P.prototype.nodeType = Z, r(P, h), I.prototype.serializeToString = function (e, t, n) {
            return M.call(e, t, n)
        }, h.prototype.toString = M;
        try {
            Object.defineProperty && (Object.defineProperty(a.prototype, "length", {
                get: function () {
                    return s(this), this.$$length
                }
            }), Object.defineProperty(h.prototype, "textContent", {
                get: function () {
                    return H(this)
                },
                set: function (e) {
                    switch (this.nodeType) {
                        case q:
                        case te:
                            for (; this.firstChild;) this.removeChild(this.firstChild);
                            (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e));
                            break;
                        default:
                            this.data = e, this.value = e, this.nodeValue = e
                    }
                }
            }), K = function (e, t, n) {
                e["$$" + t] = n
            })
        } catch (e) {}
        t.DOMImplementation = f, t.XMLSerializer = I
    }, function (e, t) {
        var n = function (e) {
                var t = {},
                    n = function (e) {
                        return !t[e] && (t[e] = []), t[e]
                    };
                e.on = function (e, t) {
                    n(e).push(t)
                }, e.off = function (e, t) {
                    for (var r = n(e), o = r.length - 1; o >= 0; o--) t === r[o] && r.splice(o, 1)
                }, e.emit = function (e, t) {
                    for (var r = n(e).map(function (e) {
                            return e
                        }), o = 0; o < r.length; o++) r[o](t)
                }
            },
            r = function () {
                n(this)
            };
        e.exports.init = n, e.exports.EventProxy = r
    }, function (e, t, n) {
        "use strict";
        var r = n(0),
            o = n(3),
            i = n(16),
            a = n(15),
            s = n(13),
            c = {
                SecretId: "",
                SecretKey: "",
                XCosSecurityToken: "",
                ChunkRetryTimes: 2,
                FileParallelLimit: 3,
                ChunkParallelLimit: 3,
                ChunkRetryTimes: 3,
                ChunkSize: 1048576,
                SliceSize: 1048576,
                CopyChunkParallelLimit: 20,
                CopyChunkSize: 10485760,
                CopySliceSize: 10485760,
                MaxPartNumber: 1e4,
                ProgressInterval: 1e3,
                UploadQueueSize: 1e4,
                Domain: "",
                ServiceDomain: "",
                Protocol: "",
                CompatibilityMode: !1,
                ForcePathStyle: !1,
                CorrectClockSkew: !0,
                SystemClockOffset: 0
            },
            u = function (e) {
                this.options = r.extend(r.clone(c), e || {}), this.options.FileParallelLimit = Math.max(1, this.options.FileParallelLimit), this.options.ChunkParallelLimit = Math.max(1, this.options.ChunkParallelLimit), this.options.ChunkRetryTimes = Math.max(0, this.options.ChunkRetryTimes), this.options.ChunkSize = Math.max(1048576, this.options.ChunkSize), this.options.CopyChunkParallelLimit = Math.max(1, this.options.CopyChunkParallelLimit), this.options.CopyChunkSize = Math.max(1048576, this.options.CopyChunkSize), this.options.CopySliceSize = Math.max(0, this.options.CopySliceSize), this.options.MaxPartNumber = Math.max(1024, Math.min(1e4, this.options.MaxPartNumber)), this.options.Timeout = Math.max(0, this.options.Timeout), this.options.AppId && console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g: "test-1250000000").'), o.init(this), i.init(this)
            };
        a.init(u, i), s.init(u, i), u.getAuthorization = r.getAuth, u.version = "0.7.9", e.exports = u
    }, function (e, t, n) {
        var r = n(4);
        e.exports = r
    }, function (e, t) {
        var n = n || function (e, t) {
            var n = {},
                r = n.lib = {},
                o = function () {},
                i = r.Base = {
                    extend: function (e) {
                        o.prototype = this;
                        var t = new o;
                        return e && t.mixIn(e), t.hasOwnProperty("init") || (t.init = function () {
                            t.$super.init.apply(this, arguments)
                        }), t.init.prototype = t, t.$super = this, t
                    },
                    create: function () {
                        var e = this.extend();
                        return e.init.apply(e, arguments), e
                    },
                    init: function () {},
                    mixIn: function (e) {
                        for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]);
                        e.hasOwnProperty("toString") && (this.toString = e.toString)
                    },
                    clone: function () {
                        return this.init.prototype.extend(this)
                    }
                },
                a = r.WordArray = i.extend({
                    init: function (e, t) {
                        e = this.words = e || [], this.sigBytes = void 0 != t ? t : 4 * e.length
                    },
                    toString: function (e) {
                        return (e || c).stringify(this)
                    },
                    concat: function (e) {
                        var t = this.words,
                            n = e.words,
                            r = this.sigBytes;
                        if (e = e.sigBytes, this.clamp(), r % 4)
                            for (var o = 0; o < e; o++) t[r + o >>> 2] |= (n[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 24 - (r + o) % 4 * 8;
                        else if (65535 < n.length)
                            for (o = 0; o < e; o += 4) t[r + o >>> 2] = n[o >>> 2];
                        else t.push.apply(t, n);
                        return this.sigBytes += e, this
                    },
                    clamp: function () {
                        var t = this.words,
                            n = this.sigBytes;
                        t[n >>> 2] &= 4294967295 << 32 - n % 4 * 8, t.length = e.ceil(n / 4)
                    },
                    clone: function () {
                        var e = i.clone.call(this);
                        return e.words = this.words.slice(0), e
                    },
                    random: function (t) {
                        for (var n = [], r = 0; r < t; r += 4) n.push(4294967296 * e.random() | 0);
                        return new a.init(n, t)
                    }
                }),
                s = n.enc = {},
                c = s.Hex = {
                    stringify: function (e) {
                        var t = e.words;
                        e = e.sigBytes;
                        for (var n = [], r = 0; r < e; r++) {
                            var o = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;
                            n.push((o >>> 4).toString(16)), n.push((15 & o).toString(16))
                        }
                        return n.join("")
                    },
                    parse: function (e) {
                        for (var t = e.length, n = [], r = 0; r < t; r += 2) n[r >>> 3] |= parseInt(e.substr(r, 2), 16) << 24 - r % 8 * 4;
                        return new a.init(n, t / 2)
                    }
                },
                u = s.Latin1 = {
                    stringify: function (e) {
                        var t = e.words;
                        e = e.sigBytes;
                        for (var n = [], r = 0; r < e; r++) n.push(String.fromCharCode(t[r >>> 2] >>> 24 - r % 4 * 8 & 255));
                        return n.join("")
                    },
                    parse: function (e) {
                        for (var t = e.length, n = [], r = 0; r < t; r++) n[r >>> 2] |= (255 & e.charCodeAt(r)) << 24 - r % 4 * 8;
                        return new a.init(n, t)
                    }
                },
                l = s.Utf8 = {
                    stringify: function (e) {
                        try {
                            return decodeURIComponent(escape(u.stringify(e)))
                        } catch (e) {
                            throw Error("Malformed UTF-8 data")
                        }
                    },
                    parse: function (e) {
                        return u.parse(unescape(encodeURIComponent(e)))
                    }
                },
                d = r.BufferedBlockAlgorithm = i.extend({
                    reset: function () {
                        this._data = new a.init, this._nDataBytes = 0
                    },
                    _append: function (e) {
                        "string" == typeof e && (e = l.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes
                    },
                    _process: function (t) {
                        var n = this._data,
                            r = n.words,
                            o = n.sigBytes,
                            i = this.blockSize,
                            s = o / (4 * i),
                            s = t ? e.ceil(s) : e.max((0 | s) - this._minBufferSize, 0);
                        if (t = s * i, o = e.min(4 * t, o), t) {
                            for (var c = 0; c < t; c += i) this._doProcessBlock(r, c);
                            c = r.splice(0, t), n.sigBytes -= o
                        }
                        return new a.init(c, o)
                    },
                    clone: function () {
                        var e = i.clone.call(this);
                        return e._data = this._data.clone(), e
                    },
                    _minBufferSize: 0
                });
            r.Hasher = d.extend({
                cfg: i.extend(),
                init: function (e) {
                    this.cfg = this.cfg.extend(e), this.reset()
                },
                reset: function () {
                    d.reset.call(this), this._doReset()
                },
                update: function (e) {
                    return this._append(e), this._process(), this
                },
                finalize: function (e) {
                    return e && this._append(e), this._doFinalize()
                },
                blockSize: 16,
                _createHelper: function (e) {
                    return function (t, n) {
                        return new e.init(n).finalize(t)
                    }
                },
                _createHmacHelper: function (e) {
                    return function (t, n) {
                        return new f.HMAC.init(e, n).finalize(t)
                    }
                }
            });
            var f = n.algo = {};
            return n
        }(Math);
        ! function () {
            var e = n,
                t = e.lib,
                r = t.WordArray,
                o = t.Hasher,
                i = [],
                t = e.algo.SHA1 = o.extend({
                    _doReset: function () {
                        this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
                    },
                    _doProcessBlock: function (e, t) {
                        for (var n = this._hash.words, r = n[0], o = n[1], a = n[2], s = n[3], c = n[4], u = 0; 80 > u; u++) {
                            if (16 > u) i[u] = 0 | e[t + u];
                            else {
                                var l = i[u - 3] ^ i[u - 8] ^ i[u - 14] ^ i[u - 16];
                                i[u] = l << 1 | l >>> 31
                            }
                            l = (r << 5 | r >>> 27) + c + i[u], l = 20 > u ? l + (1518500249 + (o & a | ~o & s)) : 40 > u ? l + (1859775393 + (o ^ a ^ s)) : 60 > u ? l + ((o & a | o & s | a & s) - 1894007588) : l + ((o ^ a ^ s) - 899497514), c = s, s = a, a = o << 30 | o >>> 2, o = r, r = l
                        }
                        n[0] = n[0] + r | 0, n[1] = n[1] + o | 0, n[2] = n[2] + a | 0, n[3] = n[3] + s | 0, n[4] = n[4] + c | 0
                    },
                    _doFinalize: function () {
                        var e = this._data,
                            t = e.words,
                            n = 8 * this._nDataBytes,
                            r = 8 * e.sigBytes;
                        return t[r >>> 5] |= 128 << 24 - r % 32, t[14 + (r + 64 >>> 9 << 4)] = Math.floor(n / 4294967296), t[15 + (r + 64 >>> 9 << 4)] = n, e.sigBytes = 4 * t.length, this._process(), this._hash
                    },
                    clone: function () {
                        var e = o.clone.call(this);
                        return e._hash = this._hash.clone(), e
                    }
                });
            e.SHA1 = o._createHelper(t), e.HmacSHA1 = o._createHmacHelper(t)
        }(),
        function () {
            var e = n,
                t = e.enc.Utf8;
            e.algo.HMAC = e.lib.Base.extend({
                init: function (e, n) {
                    e = this._hasher = new e.init, "string" == typeof n && (n = t.parse(n));
                    var r = e.blockSize,
                        o = 4 * r;
                    n.sigBytes > o && (n = e.finalize(n)), n.clamp();
                    for (var i = this._oKey = n.clone(), a = this._iKey = n.clone(), s = i.words, c = a.words, u = 0; u < r; u++) s[u] ^= 1549556828, c[u] ^= 909522486;
                    i.sigBytes = a.sigBytes = o, this.reset()
                },
                reset: function () {
                    var e = this._hasher;
                    e.reset(), e.update(this._iKey)
                },
                update: function (e) {
                    return this._hasher.update(e), this
                },
                finalize: function (e) {
                    var t = this._hasher;
                    return e = t.finalize(e), t.reset(), t.finalize(this._oKey.clone().concat(e))
                }
            })
        }(),
        function () {
            var e = n,
                t = e.lib,
                r = t.WordArray,
                o = e.enc;
            o.Base64 = {
                stringify: function (e) {
                    var t = e.words,
                        n = e.sigBytes,
                        r = this._map;
                    e.clamp();
                    for (var o = [], i = 0; i < n; i += 3)
                        for (var a = t[i >>> 2] >>> 24 - i % 4 * 8 & 255, s = t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255, c = t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, u = a << 16 | s << 8 | c, l = 0; l < 4 && i + .75 * l < n; l++) o.push(r.charAt(u >>> 6 * (3 - l) & 63));
                    var d = r.charAt(64);
                    if (d)
                        for (; o.length % 4;) o.push(d);
                    return o.join("")
                },
                parse: function (e) {
                    var t = e.length,
                        n = this._map,
                        o = n.charAt(64);
                    if (o) {
                        var i = e.indexOf(o); - 1 != i && (t = i)
                    }
                    for (var a = [], s = 0, c = 0; c < t; c++)
                        if (c % 4) {
                            var u = n.indexOf(e.charAt(c - 1)) << c % 4 * 2,
                                l = n.indexOf(e.charAt(c)) >>> 6 - c % 4 * 2;
                            a[s >>> 2] |= (u | l) << 24 - s % 4 * 8, s++
                        } return r.create(a, s)
                },
                _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
            }
        }(), e.exports = n
    }, function (e, t) {
        function n(e) {
            return ("" + e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&apos;").replace(/"/g, "&quot;").replace(o, "")
        }
        var r = new RegExp("^([^a-zA-Z_À-ÖØ-öø-ÿͰ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿿、-퟿豈-﷏ﷰ-�])|^((x|X)(m|M)(l|L))|([^a-zA-Z_À-ÖØ-öø-ÿͰ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿿、-퟿豈-﷏ﷰ-�-.0-9·̀-ͯ‿⁀])", "g"),
            o = /[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm,
            i = function (e) {
                var t = [];
                if (e instanceof Object)
                    for (var n in e) e.hasOwnProperty(n) && t.push(n);
                return t
            },
            a = function (e, t) {
                var o = function (e, n, o, i, a) {
                    var s = void 0 !== t.indent ? t.indent : "\t",
                        c = t.prettyPrint ? "\n" + new Array(i).join(s) : "";
                    t.removeIllegalNameCharacters && (e = e.replace(r, "_"));
                    var u = [c, "<", e, o || ""];
                    return n && n.length > 0 ? (u.push(">"), u.push(n), a && u.push(c), u.push("</"), u.push(e), u.push(">")) : u.push("/>"), u.join("")
                };
                return function e(r, a, s) {
                    var c = typeof r;
                    switch ((Array.isArray ? Array.isArray(r) : r instanceof Array) ? c = "array" : r instanceof Date && (c = "date"), c) {
                        case "array":
                            var u = [];
                            return r.map(function (t) {
                                u.push(e(t, 1, s + 1))
                            }), t.prettyPrint && u.push("\n"), u.join("");
                        case "date":
                            return r.toJSON ? r.toJSON() : r + "";
                        case "object":
                            var l = [];
                            for (var d in r)
                                if (r[d] instanceof Array)
                                    for (var f in r[d]) l.push(o(d, e(r[d][f], 0, s + 1), null, s + 1, i(r[d][f]).length));
                                else l.push(o(d, e(r[d], 0, s + 1), null, s + 1));
                            return t.prettyPrint && l.length > 0 && l.push("\n"), l.join("");
                        case "function":
                            return r();
                        default:
                            return t.escape ? n(r) : "" + r
                    }
                }(e, 0, 0)
            },
            s = function (e) {
                var t = ['<?xml version="1.0" encoding="UTF-8"'];
                return e && t.push(' standalone="yes"'), t.push("?>"), t.join("")
            },
            c = function (e, t) {
                if (t || (t = {
                        xmlHeader: {
                            standalone: !0
                        },
                        prettyPrint: !0,
                        indent: "  "
                    }), "string" == typeof e) try {
                    e = JSON.parse(e.toString())
                } catch (e) {
                    return !1
                }
                var n = "",
                    r = "";
                return t && ("object" == typeof t ? (t.xmlHeader && (n = s(!!t.xmlHeader.standalone)), void 0 !== t.docType && (r = "<!DOCTYPE " + t.docType + ">")) : n = s()), t = t || {}, [n, t.prettyPrint && r ? "\n" : "", r, a(e, t)].join("").replace(/\n{2,}/g, "\n").replace(/\s+$/g, "")
            };
        e.exports = c
    }, function (e, t) {
        var n = function (e) {
            function t(e, t) {
                return e << t | e >>> 32 - t
            }

            function n(e, t) {
                var n, r, o, i, a;
                return o = 2147483648 & e, i = 2147483648 & t, n = 1073741824 & e, r = 1073741824 & t, a = (1073741823 & e) + (1073741823 & t), n & r ? 2147483648 ^ a ^ o ^ i : n | r ? 1073741824 & a ? 3221225472 ^ a ^ o ^ i : 1073741824 ^ a ^ o ^ i : a ^ o ^ i
            }

            function r(e, t, n) {
                return e & t | ~e & n
            }

            function o(e, t, n) {
                return e & n | t & ~n
            }

            function i(e, t, n) {
                return e ^ t ^ n
            }

            function a(e, t, n) {
                return t ^ (e | ~n)
            }

            function s(e, o, i, a, s, c, u) {
                return e = n(e, n(n(r(o, i, a), s), u)), n(t(e, c), o)
            }

            function c(e, r, i, a, s, c, u) {
                return e = n(e, n(n(o(r, i, a), s), u)), n(t(e, c), r)
            }

            function u(e, r, o, a, s, c, u) {
                return e = n(e, n(n(i(r, o, a), s), u)), n(t(e, c), r)
            }

            function l(e, r, o, i, s, c, u) {
                return e = n(e, n(n(a(r, o, i), s), u)), n(t(e, c), r)
            }

            function d(e) {
                var t, n, r = "",
                    o = "";
                for (n = 0; n <= 3; n++) t = e >>> 8 * n & 255, o = "0" + t.toString(16), r += o.substr(o.length - 2, 2);
                return r
            }
            var f, h, p, m, g, y, C, v, x, k = Array();
            for (e = function (e) {
                    e = e.replace(/\r\n/g, "\n");
                    for (var t = "", n = 0; n < e.length; n++) {
                        var r = e.charCodeAt(n);
                        r < 128 ? t += String.fromCharCode(r) : r > 127 && r < 2048 ? (t += String.fromCharCode(r >> 6 | 192), t += String.fromCharCode(63 & r | 128)) : (t += String.fromCharCode(r >> 12 | 224), t += String.fromCharCode(r >> 6 & 63 | 128), t += String.fromCharCode(63 & r | 128))
                    }
                    return t
                }(e), k = function (e) {
                    for (var t, n = e.length, r = n + 8, o = (r - r % 64) / 64, i = 16 * (o + 1), a = Array(i - 1), s = 0, c = 0; c < n;) t = (c - c % 4) / 4, s = c % 4 * 8, a[t] = a[t] | e.charCodeAt(c) << s, c++;
                    return t = (c - c % 4) / 4, s = c % 4 * 8, a[t] = a[t] | 128 << s, a[i - 2] = n << 3, a[i - 1] = n >>> 29, a
                }(e), y = 1732584193, C = 4023233417, v = 2562383102, x = 271733878, f = 0; f < k.length; f += 16) h = y, p = C, m = v, g = x, y = s(y, C, v, x, k[f + 0], 7, 3614090360), x = s(x, y, C, v, k[f + 1], 12, 3905402710), v = s(v, x, y, C, k[f + 2], 17, 606105819), C = s(C, v, x, y, k[f + 3], 22, 3250441966), y = s(y, C, v, x, k[f + 4], 7, 4118548399), x = s(x, y, C, v, k[f + 5], 12, 1200080426), v = s(v, x, y, C, k[f + 6], 17, 2821735955), C = s(C, v, x, y, k[f + 7], 22, 4249261313), y = s(y, C, v, x, k[f + 8], 7, 1770035416), x = s(x, y, C, v, k[f + 9], 12, 2336552879), v = s(v, x, y, C, k[f + 10], 17, 4294925233), C = s(C, v, x, y, k[f + 11], 22, 2304563134), y = s(y, C, v, x, k[f + 12], 7, 1804603682), x = s(x, y, C, v, k[f + 13], 12, 4254626195), v = s(v, x, y, C, k[f + 14], 17, 2792965006), C = s(C, v, x, y, k[f + 15], 22, 1236535329), y = c(y, C, v, x, k[f + 1], 5, 4129170786), x = c(x, y, C, v, k[f + 6], 9, 3225465664), v = c(v, x, y, C, k[f + 11], 14, 643717713), C = c(C, v, x, y, k[f + 0], 20, 3921069994), y = c(y, C, v, x, k[f + 5], 5, 3593408605), x = c(x, y, C, v, k[f + 10], 9, 38016083), v = c(v, x, y, C, k[f + 15], 14, 3634488961), C = c(C, v, x, y, k[f + 4], 20, 3889429448), y = c(y, C, v, x, k[f + 9], 5, 568446438), x = c(x, y, C, v, k[f + 14], 9, 3275163606), v = c(v, x, y, C, k[f + 3], 14, 4107603335), C = c(C, v, x, y, k[f + 8], 20, 1163531501), y = c(y, C, v, x, k[f + 13], 5, 2850285829), x = c(x, y, C, v, k[f + 2], 9, 4243563512), v = c(v, x, y, C, k[f + 7], 14, 1735328473), C = c(C, v, x, y, k[f + 12], 20, 2368359562), y = u(y, C, v, x, k[f + 5], 4, 4294588738), x = u(x, y, C, v, k[f + 8], 11, 2272392833), v = u(v, x, y, C, k[f + 11], 16, 1839030562), C = u(C, v, x, y, k[f + 14], 23, 4259657740), y = u(y, C, v, x, k[f + 1], 4, 2763975236), x = u(x, y, C, v, k[f + 4], 11, 1272893353), v = u(v, x, y, C, k[f + 7], 16, 4139469664), C = u(C, v, x, y, k[f + 10], 23, 3200236656), y = u(y, C, v, x, k[f + 13], 4, 681279174), x = u(x, y, C, v, k[f + 0], 11, 3936430074), v = u(v, x, y, C, k[f + 3], 16, 3572445317), C = u(C, v, x, y, k[f + 6], 23, 76029189), y = u(y, C, v, x, k[f + 9], 4, 3654602809), x = u(x, y, C, v, k[f + 12], 11, 3873151461), v = u(v, x, y, C, k[f + 15], 16, 530742520), C = u(C, v, x, y, k[f + 2], 23, 3299628645), y = l(y, C, v, x, k[f + 0], 6, 4096336452), x = l(x, y, C, v, k[f + 7], 10, 1126891415), v = l(v, x, y, C, k[f + 14], 15, 2878612391), C = l(C, v, x, y, k[f + 5], 21, 4237533241), y = l(y, C, v, x, k[f + 12], 6, 1700485571), x = l(x, y, C, v, k[f + 3], 10, 2399980690), v = l(v, x, y, C, k[f + 10], 15, 4293915773), C = l(C, v, x, y, k[f + 1], 21, 2240044497), y = l(y, C, v, x, k[f + 8], 6, 1873313359), x = l(x, y, C, v, k[f + 15], 10, 4264355552), v = l(v, x, y, C, k[f + 6], 15, 2734768916), C = l(C, v, x, y, k[f + 13], 21, 1309151649), y = l(y, C, v, x, k[f + 4], 6, 4149444226), x = l(x, y, C, v, k[f + 11], 10, 3174756917), v = l(v, x, y, C, k[f + 2], 15, 718787259), C = l(C, v, x, y, k[f + 9], 21, 3951481745), y = n(y, h), C = n(C, p), v = n(v, m), x = n(x, g);
            return (d(y) + d(C) + d(v) + d(x)).toLowerCase()
        };
        e.exports = n
    }, function (e, t) {
        var n = function (e) {
                var t, n, r, o = [],
                    i = Object.keys(e);
                for (t = 0; t < i.length; t++) n = i[t], r = e[n] || "", o.push(n + "=" + encodeURIComponent(r));
                return o.join("&")
            },
            r = function (e, t) {
                var r, o = e.filePath,
                    i = e.headers || {},
                    a = e.url,
                    s = e.method,
                    c = e.onProgress,
                    u = function (e, n) {
                        t(e, {
                            statusCode: n.statusCode,
                            headers: n.header
                        }, n.data)
                    };
                if (o) {
                    var l, d = a.match(/^(https?:\/\/[^\/]+\/)([^\/]*\/?)(.*)$/);
                    e.pathStyle ? (l = decodeURIComponent(d[3] || ""), a = d[1] + d[2]) : (l = decodeURIComponent(d[2] + d[3] || ""), a = d[1]);
                    var f = {
                            key: l,
                            success_action_status: 200,
                            Signature: i.Authorization
                        },
                        h = ["Cache-Control", "Content-Type", "Content-Disposition", "Content-Encoding", "Expires", "x-cos-storage-class", "x-cos-security-token"];
                    for (var p in e.headers) e.headers.hasOwnProperty(p) && (p.indexOf("x-cos-meta-") > -1 || h.indexOf(p) > -1) && (f[p] = e.headers[p]);
                    i["x-cos-acl"] && (f.acl = i["x-cos-acl"]), !f["Content-Type"] && (f["Content-Type"] = "");
                    var m = {};
                    r = wx.uploadFile({
                        url: a,
                        method: s,
                        name: "file",
                        filePath: o,
                        formData: f,
                        success: function (e) {
                            !e.header && (e.header = m), u(null, e)
                        },
                        fail: function (e) {
                            u(e.errMsg, e)
                        }
                    }), r.onHeadersReceived && r.onHeadersReceived(function (e) {
                        m = e.header
                    }), r.onProgressUpdate(function (e) {
                        c({
                            loaded: e.totalBytesSent,
                            total: e.totalBytesExpectedToSend,
                            progress: e.progress / 100
                        })
                    })
                } else {
                    var g = e.qs && n(e.qs) || "";
                    g && (a += (a.indexOf("?") > -1 ? "&" : "?") + g), i["Content-Length"] && delete i["Content-Length"], wx.request({
                        url: a,
                        method: s,
                        header: i,
                        dataType: "text",
                        data: e.body,
                        success: function (e) {
                            u(null, e)
                        },
                        fail: function (e) {
                            u(e.errMsg, e)
                        }
                    })
                }
                return r
            };
        e.exports = r
    }, function (e, t, n) {
        var r = n(11).DOMParser,
            o = function (e) {
                "use strict";

                function t(e) {
                    var t = e.localName;
                    return null == t && (t = e.baseName), null != t && "" != t || (t = e.nodeName), t
                }

                function n(e) {
                    return e.prefix
                }

                function o(e) {
                    return "string" == typeof e ? e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;") : e
                }

                function i(e, t, n, r) {
                    for (var o = 0; o < e.length; o++) {
                        var i = e[o];
                        if ("string" == typeof i) {
                            if (i == r) break
                        } else if (i instanceof RegExp) {
                            if (i.test(r)) break
                        } else if ("function" == typeof i && i(t, n, r)) break
                    }
                    return o != e.length
                }

                function a(t, n, r) {
                    switch (e.arrayAccessForm) {
                        case "property":
                            t[n] instanceof Array ? t[n + "_asArray"] = t[n] : t[n + "_asArray"] = [t[n]]
                    }!(t[n] instanceof Array) && e.arrayAccessFormPaths.length > 0 && i(e.arrayAccessFormPaths, t, n, r) && (t[n] = [t[n]])
                }

                function s(e) {
                    var t = e.split(/[-T:+Z]/g),
                        n = new Date(t[0], t[1] - 1, t[2]),
                        r = t[5].split(".");
                    if (n.setHours(t[3], t[4], r[0]), r.length > 1 && n.setMilliseconds(r[1]), t[6] && t[7]) {
                        var o = 60 * t[6] + Number(t[7]);
                        o = 0 + ("-" == (/\d\d-\d\d:\d\d$/.test(e) ? "-" : "+") ? -1 * o : o), n.setMinutes(n.getMinutes() - o - n.getTimezoneOffset())
                    } else -1 !== e.indexOf("Z", e.length - 1) && (n = new Date(Date.UTC(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds())));
                    return n
                }

                function c(t, n, r) {
                    if (e.datetimeAccessFormPaths.length > 0) {
                        var o = r.split(".#")[0];
                        return i(e.datetimeAccessFormPaths, t, n, o) ? s(t) : t
                    }
                    return t
                }

                function u(t, n, r, o) {
                    return !(n == A.ELEMENT_NODE && e.xmlElementsFilter.length > 0) || i(e.xmlElementsFilter, t, r, o)
                }

                function l(r, o) {
                    if (r.nodeType == A.DOCUMENT_NODE) {
                        for (var i = new Object, s = r.childNodes, d = 0; d < s.length; d++) {
                            var f = s.item(d);
                            if (f.nodeType == A.ELEMENT_NODE) {
                                var h = t(f);
                                i[h] = l(f, h)
                            }
                        }
                        return i
                    }
                    if (r.nodeType == A.ELEMENT_NODE) {
                        var i = new Object;
                        i.__cnt = 0;
                        for (var s = r.childNodes, d = 0; d < s.length; d++) {
                            var f = s.item(d),
                                h = t(f);
                            if (f.nodeType != A.COMMENT_NODE) {
                                var p = o + "." + h;
                                u(i, f.nodeType, h, p) && (i.__cnt++, null == i[h] ? (i[h] = l(f, p), a(i, h, p)) : (null != i[h] && (i[h] instanceof Array || (i[h] = [i[h]], a(i, h, p))), i[h][i[h].length] = l(f, p)))
                            }
                        }
                        for (var m = 0; m < r.attributes.length; m++) {
                            var g = r.attributes.item(m);
                            i.__cnt++, i[e.attributePrefix + g.name] = g.value
                        }
                        var y = n(r);
                        return null != y && "" != y && (i.__cnt++, i.__prefix = y), null != i["#text"] && (i.__text = i["#text"], i.__text instanceof Array && (i.__text = i.__text.join("\n")), e.stripWhitespaces && (i.__text = i.__text.trim()), delete i["#text"], "property" == e.arrayAccessForm && delete i["#text_asArray"], i.__text = c(i.__text, h, o + "." + h)), null != i["#cdata-section"] && (i.__cdata = i["#cdata-section"], delete i["#cdata-section"], "property" == e.arrayAccessForm && delete i["#cdata-section_asArray"]), 0 == i.__cnt && "text" == e.emptyNodeForm ? i = "" : 1 == i.__cnt && null != i.__text ? i = i.__text : 1 != i.__cnt || null == i.__cdata || e.keepCData ? i.__cnt > 1 && null != i.__text && e.skipEmptyTextNodesForObj && (e.stripWhitespaces && "" == i.__text || "" == i.__text.trim()) && delete i.__text : i = i.__cdata, delete i.__cnt, !e.enableToStringFunc || null == i.__text && null == i.__cdata || (i.toString = function () {
                            return (null != this.__text ? this.__text : "") + (null != this.__cdata ? this.__cdata : "")
                        }), i
                    }
                    if (r.nodeType == A.TEXT_NODE || r.nodeType == A.CDATA_SECTION_NODE) return r.nodeValue
                }

                function d(t, n, r, i) {
                    var a = "<" + (null != t && null != t.__prefix ? t.__prefix + ":" : "") + n;
                    if (null != r)
                        for (var s = 0; s < r.length; s++) {
                            var c = r[s],
                                u = t[c];
                            e.escapeMode && (u = o(u)), a += " " + c.substr(e.attributePrefix.length) + "=", e.useDoubleQuotes ? a += '"' + u + '"' : a += "'" + u + "'"
                        }
                    return a += i ? "/>" : ">"
                }

                function f(e, t) {
                    return "</" + (null != e.__prefix ? e.__prefix + ":" : "") + t + ">"
                }

                function h(e, t) {
                    return -1 !== e.indexOf(t, e.length - t.length)
                }

                function p(t, n) {
                    return !!("property" == e.arrayAccessForm && h(n.toString(), "_asArray") || 0 == n.toString().indexOf(e.attributePrefix) || 0 == n.toString().indexOf("__") || t[n] instanceof Function)
                }

                function m(e) {
                    var t = 0;
                    if (e instanceof Object)
                        for (var n in e) p(e, n) || t++;
                    return t
                }

                function g(t, n, r) {
                    return 0 == e.jsonPropertiesFilter.length || "" == r || i(e.jsonPropertiesFilter, t, n, r)
                }

                function y(t) {
                    var n = [];
                    if (t instanceof Object)
                        for (var r in t) - 1 == r.toString().indexOf("__") && 0 == r.toString().indexOf(e.attributePrefix) && n.push(r);
                    return n
                }

                function C(t) {
                    var n = "";
                    return null != t.__cdata && (n += "<![CDATA[" + t.__cdata + "]]>"), null != t.__text && (e.escapeMode ? n += o(t.__text) : n += t.__text), n
                }

                function v(t) {
                    var n = "";
                    return t instanceof Object ? n += C(t) : null != t && (e.escapeMode ? n += o(t) : n += t), n
                }

                function x(e, t) {
                    return "" === e ? t : e + "." + t
                }

                function k(e, t, n, r) {
                    var o = "";
                    if (0 == e.length) o += d(e, t, n, !0);
                    else
                        for (var i = 0; i < e.length; i++) o += d(e[i], t, y(e[i]), !1), o += S(e[i], x(r, t)), o += f(e[i], t);
                    return o
                }

                function S(e, t) {
                    var n = "";
                    if (m(e) > 0)
                        for (var r in e)
                            if (!p(e, r) && ("" == t || g(e, r, x(t, r)))) {
                                var o = e[r],
                                    i = y(o);
                                if (null == o || void 0 == o) n += d(o, r, i, !0);
                                else if (o instanceof Object)
                                    if (o instanceof Array) n += k(o, r, i, t);
                                    else if (o instanceof Date) n += d(o, r, i, !1), n += o.toISOString(), n += f(o, r);
                                else {
                                    var a = m(o);
                                    a > 0 || null != o.__text || null != o.__cdata ? (n += d(o, r, i, !1), n += S(o, x(t, r)), n += f(o, r)) : n += d(o, r, i, !0)
                                } else n += d(o, r, i, !1), n += v(o), n += f(o, r)
                            } return n += v(e)
                }
                e = e || {},
                    function () {
                        void 0 === e.escapeMode && (e.escapeMode = !0), e.attributePrefix = e.attributePrefix || "_", e.arrayAccessForm = e.arrayAccessForm || "none", e.emptyNodeForm = e.emptyNodeForm || "text", void 0 === e.enableToStringFunc && (e.enableToStringFunc = !0), e.arrayAccessFormPaths = e.arrayAccessFormPaths || [], void 0 === e.skipEmptyTextNodesForObj && (e.skipEmptyTextNodesForObj = !0), void 0 === e.stripWhitespaces && (e.stripWhitespaces = !0), e.datetimeAccessFormPaths = e.datetimeAccessFormPaths || [], void 0 === e.useDoubleQuotes && (e.useDoubleQuotes = !1), e.xmlElementsFilter = e.xmlElementsFilter || [], e.jsonPropertiesFilter = e.jsonPropertiesFilter || [], void 0 === e.keepCData && (e.keepCData = !1)
                    }();
                var A = {
                    ELEMENT_NODE: 1,
                    TEXT_NODE: 3,
                    CDATA_SECTION_NODE: 4,
                    COMMENT_NODE: 8,
                    DOCUMENT_NODE: 9
                };
                this.parseXmlString = function (e) {
                    if (void 0 === e) return null;
                    var t;
                    if (r) {
                        var n = new r,
                            o = null;
                        try {
                            o = n.parseFromString("INVALID", "text/xml").getElementsByTagName("parsererror")[0].namespaceURI
                        } catch (e) {
                            o = null
                        }
                        try {
                            t = n.parseFromString(e, "text/xml"), null != o && t.getElementsByTagNameNS(o, "parsererror").length > 0 && (t = null)
                        } catch (e) {
                            t = null
                        }
                    } else 0 == e.indexOf("<?") && (e = e.substr(e.indexOf("?>") + 2)), t = new ActiveXObject("Microsoft.XMLDOM"), t.async = "false", t.loadXML(e);
                    return t
                }, this.asArray = function (e) {
                    return void 0 === e || null == e ? [] : e instanceof Array ? e : [e]
                }, this.toXmlDateTime = function (e) {
                    return e instanceof Date ? e.toISOString() : "number" == typeof e ? new Date(e).toISOString() : null
                }, this.asDateTime = function (e) {
                    return "string" == typeof e ? s(e) : e
                }, this.xml2json = function (e) {
                    return l(e)
                }, this.xml_str2json = function (e) {
                    var t = this.parseXmlString(e);
                    return null != t ? this.xml2json(t) : null
                }, this.json2xml_str = function (e) {
                    return S(e, "")
                }, this.json2xml = function (e) {
                    var t = this.json2xml_str(e);
                    return this.parseXmlString(t)
                }, this.getVersion = function () {
                    return "1.2.0"
                }
            },
            i = function (e) {
                if (!e) return null;
                var t = new r,
                    n = t.parseFromString(e, "text/xml"),
                    i = new o,
                    a = i.xml2json(n);
                return a.html && a.getElementsByTagName("parsererror").length ? null : a
            };
        e.exports = i
    }, function (e, t, n) {
        function r(e) {
            this.options = e || {
                locator: {}
            }
        }

        function o(e, t, n) {
            function r(t) {
                var r = e[t];
                !r && a && (r = 2 == e.length ? function (n) {
                    e(t, n)
                } : e), o[t] = r && function (e) {
                    r("[xmldom " + t + "]\t" + e + s(n))
                } || function () {}
            }
            if (!e) {
                if (t instanceof i) return t;
                e = t
            }
            var o = {},
                a = e instanceof Function;
            return n = n || {}, r("warning"), r("error"), r("fatalError"), o
        }

        function i() {
            this.cdata = !1
        }

        function a(e, t) {
            t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber
        }

        function s(e) {
            if (e) return "\n@" + (e.systemId || "") + "#[line:" + e.lineNumber + ",col:" + e.columnNumber + "]"
        }

        function c(e, t, n) {
            return "string" == typeof e ? e.substr(t, n) : e.length >= t + n || t ? new java.lang.String(e, t, n) + "" : e
        }

        function u(e, t) {
            e.currentElement ? e.currentElement.appendChild(t) : e.doc.appendChild(t)
        }
        r.prototype.parseFromString = function (e, t) {
            var n = this.options,
                r = new l,
                a = n.domBuilder || new i,
                s = n.errorHandler,
                c = n.locator,
                u = n.xmlns || {},
                d = {
                    lt: "<",
                    gt: ">",
                    amp: "&",
                    quot: '"',
                    apos: "'"
                };
            return c && a.setDocumentLocator(c), r.errorHandler = o(s, a, c), r.domBuilder = n.domBuilder || a, /\/x?html?$/.test(t) && (d.nbsp = " ", d.copy = "©", u[""] = "http://www.w3.org/1999/xhtml"), u.xml = u.xml || "http://www.w3.org/XML/1998/namespace", e ? r.parse(e, u, d) : r.errorHandler.error("invalid doc source"), a.doc
        }, i.prototype = {
            startDocument: function () {
                this.doc = (new d).createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId)
            },
            startElement: function (e, t, n, r) {
                var o = this.doc,
                    i = o.createElementNS(e, n || t),
                    s = r.length;
                u(this, i), this.currentElement = i, this.locator && a(this.locator, i);
                for (var c = 0; c < s; c++) {
                    var e = r.getURI(c),
                        l = r.getValue(c),
                        n = r.getQName(c),
                        d = o.createAttributeNS(e, n);
                    this.locator && a(r.getLocator(c), d), d.value = d.nodeValue = l, i.setAttributeNode(d)
                }
            },
            endElement: function (e, t, n) {
                var r = this.currentElement;
                r.tagName;
                this.currentElement = r.parentNode
            },
            startPrefixMapping: function (e, t) {},
            endPrefixMapping: function (e) {},
            processingInstruction: function (e, t) {
                var n = this.doc.createProcessingInstruction(e, t);
                this.locator && a(this.locator, n), u(this, n)
            },
            ignorableWhitespace: function (e, t, n) {},
            characters: function (e, t, n) {
                if (e = c.apply(this, arguments)) {
                    if (this.cdata) var r = this.doc.createCDATASection(e);
                    else var r = this.doc.createTextNode(e);
                    this.currentElement ? this.currentElement.appendChild(r) : /^\s*$/.test(e) && this.doc.appendChild(r), this.locator && a(this.locator, r)
                }
            },
            skippedEntity: function (e) {},
            endDocument: function () {
                this.doc.normalize()
            },
            setDocumentLocator: function (e) {
                (this.locator = e) && (e.lineNumber = 0)
            },
            comment: function (e, t, n) {
                e = c.apply(this, arguments);
                var r = this.doc.createComment(e);
                this.locator && a(this.locator, r), u(this, r)
            },
            startCDATA: function () {
                this.cdata = !0
            },
            endCDATA: function () {
                this.cdata = !1
            },
            startDTD: function (e, t, n) {
                var r = this.doc.implementation;
                if (r && r.createDocumentType) {
                    var o = r.createDocumentType(e, t, n);
                    this.locator && a(this.locator, o), u(this, o)
                }
            },
            warning: function (e) {
                console.warn("[xmldom warning]\t" + e, s(this.locator))
            },
            error: function (e) {
                console.error("[xmldom error]\t" + e, s(this.locator))
            },
            fatalError: function (e) {
                throw console.error("[xmldom fatalError]\t" + e, s(this.locator)), e
            }
        }, "endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, function (e) {
            i.prototype[e] = function () {
                return null
            }
        });
        var l = n(12).XMLReader,
            d = t.DOMImplementation = n(2).DOMImplementation;
        t.XMLSerializer = n(2).XMLSerializer, t.DOMParser = r
    }, function (e, t) {
        function n() {}

        function r(e, t, n, r, u) {
            function h(e) {
                if (e > 65535) {
                    e -= 65536;
                    var t = 55296 + (e >> 10),
                        n = 56320 + (1023 & e);
                    return String.fromCharCode(t, n)
                }
                return String.fromCharCode(e)
            }

            function p(e) {
                var t = e.slice(1, -1);
                return t in n ? n[t] : "#" === t.charAt(0) ? h(parseInt(t.substr(1).replace("x", "0x"))) : (u.error("entity not found:" + e), e)
            }

            function m(t) {
                if (t > A) {
                    var n = e.substring(A, t).replace(/&#?\w+;/g, p);
                    x && g(A), r.characters(n, 0, t - A), A = t
                }
            }

            function g(t, n) {
                for (; t >= C && (n = v.exec(e));) y = n.index, C = y + n[0].length, x.lineNumber++;
                x.columnNumber = t - y + 1
            }
            for (var y = 0, C = 0, v = /.*(?:\r\n?|\n)|.*$/g, x = r.locator, k = [{
                    currentNSMap: t
                }], S = {}, A = 0;;) {
                try {
                    var b = e.indexOf("<", A);
                    if (b < 0) {
                        if (!e.substr(A).match(/^\s*$/)) {
                            var R = r.doc,
                                T = R.createTextNode(e.substr(A));
                            R.appendChild(T), r.currentElement = T
                        }
                        return
                    }
                    switch (b > A && m(b), e.charAt(b + 1)) {
                        case "/":
                            var E = e.indexOf(">", b + 3),
                                w = e.substring(b + 2, E),
                                _ = k.pop();
                            E < 0 ? (w = e.substring(b + 2).replace(/[\s<].*/, ""), u.error("end tag name: " + w + " is not complete:" + _.tagName), E = b + 1 + w.length) : w.match(/\s</) && (w = w.replace(/[\s<].*/, ""), u.error("end tag name: " + w + " maybe not complete"), E = b + 1 + w.length);
                            var N = _.localNSMap,
                                B = _.tagName == w;
                            if (B || _.tagName && _.tagName.toLowerCase() == w.toLowerCase()) {
                                if (r.endElement(_.uri, _.localName, w), N)
                                    for (var D in N) r.endPrefixMapping(D);
                                B || u.fatalError("end tag name: " + w + " is not match the current start tagName:" + _.tagName)
                            } else k.push(_);
                            E++;
                            break;
                        case "?":
                            x && g(b), E = d(e, b, r);
                            break;
                        case "!":
                            x && g(b), E = l(e, b, r, u);
                            break;
                        default:
                            x && g(b);
                            var O = new f,
                                P = k[k.length - 1].currentNSMap,
                                E = i(e, b, O, P, p, u),
                                I = O.length;
                            if (!O.closed && c(e, E, O.tagName, S) && (O.closed = !0, n.nbsp || u.warning("unclosed xml attribute")), x && I) {
                                for (var M = o(x, {}), L = 0; L < I; L++) {
                                    var F = O[L];
                                    g(F.offset), F.locator = o(x, {})
                                }
                                r.locator = M, a(O, r, P) && k.push(O), r.locator = x
                            } else a(O, r, P) && k.push(O);
                            "http://www.w3.org/1999/xhtml" !== O.uri || O.closed ? E++ : E = s(e, E, O.tagName, p, r)
                    }
                } catch (e) {
                    u.error("element parse error: " + e), E = -1
                }
                E > A ? A = E : m(Math.max(b, A) + 1)
            }
        }

        function o(e, t) {
            return t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber, t
        }

        function i(e, t, n, r, o, i) {
            for (var a, s, c = ++t, u = C;;) {
                var l = e.charAt(c);
                switch (l) {
                    case "=":
                        if (u === v) a = e.slice(t, c), u = k;
                        else {
                            if (u !== x) throw new Error("attribute equal must after attrName");
                            u = k
                        }
                        break;
                    case "'":
                    case '"':
                        if (u === k || u === v) {
                            if (u === v && (i.warning('attribute value must after "="'), a = e.slice(t, c)), t = c + 1, !((c = e.indexOf(l, t)) > 0)) throw new Error("attribute value no end '" + l + "' match");
                            s = e.slice(t, c).replace(/&#?\w+;/g, o), n.add(a, s, t - 1), u = A
                        } else {
                            if (u != S) throw new Error('attribute value must after "="');
                            s = e.slice(t, c).replace(/&#?\w+;/g, o), n.add(a, s, t), i.warning('attribute "' + a + '" missed start quot(' + l + ")!!"), t = c + 1, u = A
                        }
                        break;
                    case "/":
                        switch (u) {
                            case C:
                                n.setTagName(e.slice(t, c));
                            case A:
                            case b:
                            case R:
                                u = R, n.closed = !0;
                            case S:
                            case v:
                            case x:
                                break;
                            default:
                                throw new Error("attribute invalid close char('/')")
                        }
                        break;
                    case "":
                        return i.error("unexpected end of input"), u == C && n.setTagName(e.slice(t, c)), c;
                    case ">":
                        switch (u) {
                            case C:
                                n.setTagName(e.slice(t, c));
                            case A:
                            case b:
                            case R:
                                break;
                            case S:
                            case v:
                                s = e.slice(t, c), "/" === s.slice(-1) && (n.closed = !0, s = s.slice(0, -1));
                            case x:
                                u === x && (s = a), u == S ? (i.warning('attribute "' + s + '" missed quot(")!!'), n.add(a, s.replace(/&#?\w+;/g, o), t)) : ("http://www.w3.org/1999/xhtml" === r[""] && s.match(/^(?:disabled|checked|selected)$/i) || i.warning('attribute "' + s + '" missed value!! "' + s + '" instead!!'), n.add(s, s, t));
                                break;
                            case k:
                                throw new Error("attribute value missed!!")
                        }
                        return c;
                    case "":
                        l = " ";
                    default:
                        if (l <= " ") switch (u) {
                            case C:
                                n.setTagName(e.slice(t, c)), u = b;
                                break;
                            case v:
                                a = e.slice(t, c), u = x;
                                break;
                            case S:
                                var s = e.slice(t, c).replace(/&#?\w+;/g, o);
                                i.warning('attribute "' + s + '" missed quot(")!!'), n.add(a, s, t);
                            case A:
                                u = b
                        } else switch (u) {
                            case x:
                                n.tagName;
                                "http://www.w3.org/1999/xhtml" === r[""] && a.match(/^(?:disabled|checked|selected)$/i) || i.warning('attribute "' + a + '" missed value!! "' + a + '" instead2!!'), n.add(a, a, t), t = c, u = v;
                                break;
                            case A:
                                i.warning('attribute space is required"' + a + '"!!');
                            case b:
                                u = v, t = c;
                                break;
                            case k:
                                u = S, t = c;
                                break;
                            case R:
                                throw new Error("elements closed character '/' and '>' must be connected to")
                        }
                }
                c++
            }
        }

        function a(e, t, n) {
            for (var r = e.tagName, o = null, i = e.length; i--;) {
                var a = e[i],
                    s = a.qName,
                    c = a.value,
                    l = s.indexOf(":");
                if (l > 0) var d = a.prefix = s.slice(0, l),
                    f = s.slice(l + 1),
                    h = "xmlns" === d && f;
                else f = s, d = null, h = "xmlns" === s && "";
                a.localName = f, !1 !== h && (null == o && (o = {}, u(n, n = {})), n[h] = o[h] = c, a.uri = "http://www.w3.org/2000/xmlns/", t.startPrefixMapping(h, c))
            }
            for (var i = e.length; i--;) {
                a = e[i];
                var d = a.prefix;
                d && ("xml" === d && (a.uri = "http://www.w3.org/XML/1998/namespace"), "xmlns" !== d && (a.uri = n[d || ""]))
            }
            var l = r.indexOf(":");
            l > 0 ? (d = e.prefix = r.slice(0, l), f = e.localName = r.slice(l + 1)) : (d = null, f = e.localName = r);
            var p = e.uri = n[d || ""];
            if (t.startElement(p, f, r, e), !e.closed) return e.currentNSMap = n, e.localNSMap = o, !0;
            if (t.endElement(p, f, r), o)
                for (d in o) t.endPrefixMapping(d)
        }

        function s(e, t, n, r, o) {
            if (/^(?:script|textarea)$/i.test(n)) {
                var i = e.indexOf("</" + n + ">", t),
                    a = e.substring(t + 1, i);
                if (/[&<]/.test(a)) return /^script$/i.test(n) ? (o.characters(a, 0, a.length), i) : (a = a.replace(/&#?\w+;/g, r), o.characters(a, 0, a.length), i)
            }
            return t + 1
        }

        function c(e, t, n, r) {
            var o = r[n];
            return null == o && (o = e.lastIndexOf("</" + n + ">"), o < t && (o = e.lastIndexOf("</" + n)), r[n] = o), o < t
        }

        function u(e, t) {
            for (var n in e) t[n] = e[n]
        }

        function l(e, t, n, r) {
            switch (e.charAt(t + 2)) {
                case "-":
                    if ("-" === e.charAt(t + 3)) {
                        var o = e.indexOf("--\x3e", t + 4);
                        return o > t ? (n.comment(e, t + 4, o - t - 4), o + 3) : (r.error("Unclosed comment"), -1)
                    }
                    return -1;
                default:
                    if ("CDATA[" == e.substr(t + 3, 6)) {
                        var o = e.indexOf("]]>", t + 9);
                        return n.startCDATA(), n.characters(e, t + 9, o - t - 9), n.endCDATA(), o + 3
                    }
                    var i = p(e, t),
                        a = i.length;
                    if (a > 1 && /!doctype/i.test(i[0][0])) {
                        var s = i[1][0],
                            c = a > 3 && /^public$/i.test(i[2][0]) && i[3][0],
                            u = a > 4 && i[4][0],
                            l = i[a - 1];
                        return n.startDTD(s, c && c.replace(/^(['"])(.*?)\1$/, "$2"), u && u.replace(/^(['"])(.*?)\1$/, "$2")), n.endDTD(), l.index + l[0].length
                    }
            }
            return -1
        }

        function d(e, t, n) {
            var r = e.indexOf("?>", t);
            if (r) {
                var o = e.substring(t, r).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
                if (o) {
                    o[0].length;
                    return n.processingInstruction(o[1], o[2]), r + 2
                }
                return -1
            }
            return -1
        }

        function f(e) {}

        function h(e, t) {
            return e.__proto__ = t, e
        }

        function p(e, t) {
            var n, r = [],
                o = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
            for (o.lastIndex = t, o.exec(e); n = o.exec(e);)
                if (r.push(n), n[1]) return r
        }
        var m = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
            g = new RegExp("[\\-\\.0-9" + m.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),
            y = new RegExp("^" + m.source + g.source + "*(?::" + m.source + g.source + "*)?$"),
            C = 0,
            v = 1,
            x = 2,
            k = 3,
            S = 4,
            A = 5,
            b = 6,
            R = 7;
        n.prototype = {
            parse: function (e, t, n) {
                var o = this.domBuilder;
                o.startDocument(), u(t, t = {}), r(e, t, n, o, this.errorHandler), o.endDocument()
            }
        }, f.prototype = {
            setTagName: function (e) {
                if (!y.test(e)) throw new Error("invalid tagName:" + e);
                this.tagName = e
            },
            add: function (e, t, n) {
                if (!y.test(e)) throw new Error("invalid attribute:" + e);
                this[this.length++] = {
                    qName: e,
                    value: t,
                    offset: n
                }
            },
            length: 0,
            getLocalName: function (e) {
                return this[e].localName
            },
            getLocator: function (e) {
                return this[e].locator
            },
            getQName: function (e) {
                return this[e].qName
            },
            getURI: function (e) {
                return this[e].uri
            },
            getValue: function (e) {
                return this[e].value
            }
        }, h({}, h.prototype) instanceof h || (h = function (e, t) {
            function n() {}
            n.prototype = t, n = new n;
            for (t in e) n[t] = e[t];
            return n
        }), t.XMLReader = n
    }, function (e, t, n) {
        function r(e, t) {
            var n = e.Bucket,
                r = e.Region,
                a = e.Key,
                s = e.UploadId,
                c = e.Level || "task",
                l = e.AsyncLimit,
                d = this,
                f = new u;
            if (f.on("error", function (e) {
                    return t(e)
                }), f.on("get_abort_array", function (i) {
                    o.call(d, {
                        Bucket: n,
                        Region: r,
                        Key: a,
                        Headers: e.Headers,
                        AsyncLimit: l,
                        AbortArray: i
                    }, function (e, n) {
                        if (e) return t(e);
                        t(null, n)
                    })
                }), "bucket" === c) i.call(d, {
                Bucket: n,
                Region: r
            }, function (e, n) {
                if (e) return t(e);
                f.emit("get_abort_array", n.UploadList || [])
            });
            else if ("file" === c) {
                if (!a) return t({
                    error: "abort_upload_task_no_key"
                });
                i.call(d, {
                    Bucket: n,
                    Region: r,
                    Key: a
                }, function (e, n) {
                    if (e) return t(e);
                    f.emit("get_abort_array", n.UploadList || [])
                })
            } else {
                if ("task" !== c) return t({
                    error: "abort_unknown_level"
                });
                if (!s) return t({
                    error: "abort_upload_task_no_id"
                });
                if (!a) return t({
                    error: "abort_upload_task_no_key"
                });
                f.emit("get_abort_array", [{
                    Key: a,
                    UploadId: s
                }])
            }
        }

        function o(e, t) {
            var n = e.Bucket,
                r = e.Region,
                o = e.Key,
                i = e.AbortArray,
                a = e.AsyncLimit || 1,
                s = this,
                u = 0,
                l = new Array(i.length);
            c.eachLimit(i, a, function (t, i) {
                var a = u;
                if (o && o !== t.Key) return l[a] = {
                    error: {
                        KeyNotMatch: !0
                    }
                }, void i(null);
                var c = t.UploadId || t.UploadID;
                s.multipartAbort({
                    Bucket: n,
                    Region: r,
                    Key: t.Key,
                    Headers: e.Headers,
                    UploadId: c
                }, function (e, o) {
                    var s = {
                        Bucket: n,
                        Region: r,
                        Key: t.Key,
                        UploadId: c
                    };
                    l[a] = {
                        error: e,
                        task: s
                    }, i(null)
                }), u++
            }, function (e) {
                if (e) return t(e);
                for (var n = [], r = [], o = 0, i = l.length; o < i; o++) {
                    var a = l[o];
                    a.task && (a.error ? r.push(a.task) : n.push(a.task))
                }
                return t(null, {
                    successList: n,
                    errorList: r
                })
            })
        }

        function i(e, t) {
            var n = this,
                r = [],
                o = {
                    Bucket: e.Bucket,
                    Region: e.Region,
                    Prefix: e.Key
                },
                i = function () {
                    n.multipartList(o, function (e, n) {
                        if (e) return t(e);
                        r.push.apply(r, n.Upload || []), "true" == n.IsTruncated ? (o.KeyMarker = n.NextKeyMarker, o.UploadIdMarker = n.NextUploadIdMarker, i()) : t(null, {
                            UploadList: r
                        })
                    })
                };
            i()
        }

        function a(e, t) {
            var n = new u,
                r = this,
                o = e.Bucket,
                i = e.Region,
                a = e.Key,
                d = e.CopySource,
                f = d.match(/^([^.]+-\d+)\.cos(v6)?\.([^.]+)\.[^\/]+\/(.+)$/);
            if (!f) return void t({
                error: "CopySource format error"
            });
            var h = f[1],
                p = f[3],
                m = decodeURIComponent(f[4]),
                g = void 0 === e.SliceSize ? r.options.CopySliceSize : e.SliceSize;
            g = Math.max(0, Math.min(g, 5368709120));
            var y, C, v = e.ChunkSize || this.options.CopyChunkSize,
                x = this.options.CopyChunkParallelLimit,
                k = 0;
            n.on("copy_slice_complete", function (e) {
                r.multipartComplete({
                    Bucket: o,
                    Region: i,
                    Key: a,
                    UploadId: e.UploadId,
                    Parts: e.PartList
                }, function (e, n) {
                    if (e) return C(null, !0), t(e);
                    C({
                        loaded: y,
                        total: y
                    }, !0), t(null, n)
                })
            }), n.on("get_copy_data_finish", function (e) {
                c.eachLimit(e.PartList, x, function (t, n) {
                    var c = t.PartNumber,
                        u = t.CopySourceRange,
                        l = t.end - t.start,
                        f = 0;
                    s.call(r, {
                        Bucket: o,
                        Region: i,
                        Key: a,
                        CopySource: d,
                        UploadId: e.UploadId,
                        PartNumber: c,
                        CopySourceRange: u,
                        onProgress: function (e) {
                            k += e.loaded - f, f = e.loaded, C({
                                loaded: k,
                                total: y
                            })
                        }
                    }, function (e, r) {
                        if (e) return n(e);
                        C({
                            loaded: k,
                            total: y
                        }), k += l - f, t.ETag = r.ETag, n(e || null, r)
                    })
                }, function (r) {
                    if (r) return C(null, !0), t(r);
                    n.emit("copy_slice_complete", e)
                })
            }), n.on("get_file_size_finish", function (s) {
                ! function () {
                    for (var t = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 5120], n = 1048576, o = 0; o < t.length && (n = 1024 * t[o] * 1024, !(y / n <= r.options.MaxPartNumber)); o++);
                    e.ChunkSize = v = Math.max(v, n);
                    for (var i = Math.ceil(y / v), a = [], s = 1; s <= i; s++) {
                        var c = (s - 1) * v,
                            u = s * v < y ? s * v - 1 : y - 1,
                            l = {
                                PartNumber: s,
                                start: c,
                                end: u,
                                CopySourceRange: "bytes=" + c + "-" + u
                            };
                        a.push(l)
                    }
                    e.PartList = a
                }();
                var c;
                c = "Replaced" === e.Headers["x-cos-metadata-directive"] ? e.Headers : s, c["x-cos-storage-class"] = e.Headers["x-cos-storage-class"] || s["x-cos-storage-class"], c = l.clearKey(c), r.multipartInit({
                    Bucket: o,
                    Region: i,
                    Key: a,
                    Headers: c
                }, function (r, o) {
                    if (r) return t(r);
                    e.UploadId = o.UploadId, n.emit("get_copy_data_finish", e)
                })
            }), r.headObject({
                Bucket: h,
                Region: p,
                Key: m
            }, function (o, i) {
                if (o) return void t(o.statusCode && 404 === o.statusCode ? {
                    ErrorStatus: m + " Not Exist"
                } : o);
                if (void 0 === (y = e.FileSize = i.headers["content-length"]) || !y) return void t({
                    error: 'get Content-Length error, please add "Content-Length" to CORS ExposeHeader setting.'
                });
                if (C = l.throttleOnProgress.call(r, y, e.onProgress), y <= g) e.Headers["x-cos-metadata-directive"] || (e.Headers["x-cos-metadata-directive"] = "Copy"), r.putObjectCopy(e, function (e, n) {
                    if (e) return C(null, !0), t(e);
                    C({
                        loaded: y,
                        total: y
                    }, !0), t(e, n)
                });
                else {
                    var a = i.headers,
                        s = {
                            "Cache-Control": a["cache-control"],
                            "Content-Disposition": a["content-disposition"],
                            "Content-Encoding": a["content-encoding"],
                            "Content-Type": a["content-type"],
                            Expires: a.expires,
                            "x-cos-storage-class": a["x-cos-storage-class"]
                        };
                    l.each(a, function (e, t) {
                        0 === t.indexOf("x-cos-meta-") && t.length > "x-cos-meta-".length && (s[t] = e)
                    }), n.emit("get_file_size_finish", s)
                }
            })
        }

        function s(e, t) {
            var n = e.TaskId,
                r = e.Bucket,
                o = e.Region,
                i = e.Key,
                a = e.CopySource,
                s = e.UploadId,
                u = 1 * e.PartNumber,
                l = e.CopySourceRange,
                d = this.options.ChunkRetryTimes + 1,
                f = this;
            c.retry(d, function (t) {
                f.uploadPartCopy({
                    TaskId: n,
                    Bucket: r,
                    Region: o,
                    Key: i,
                    CopySource: a,
                    UploadId: s,
                    PartNumber: u,
                    CopySourceRange: l,
                    onProgress: e.onProgress
                }, function (e, n) {
                    t(e || null, n)
                })
            }, function (e, n) {
                return t(e, n)
            })
        }
        var c = n(14),
            u = n(3).EventProxy,
            l = n(0),
            d = {
                abortUploadTask: r,
                sliceCopyFile: a
            };
        e.exports.init = function (e, t) {
            l.each(d, function (t, n) {
                e.prototype[n] = l.apiWrapper(n, t)
            })
        }
    }, function (e, t) {
        var n = function (e, t, n, r) {
                if (r = r || function () {}, !e.length || t <= 0) return r();
                var o = 0,
                    i = 0,
                    a = 0;
                ! function s() {
                    if (o >= e.length) return r();
                    for (; a < t && i < e.length;) i += 1, a += 1, n(e[i - 1], function (t) {
                        t ? (r(t), r = function () {}) : (o += 1, a -= 1, o >= e.length ? r() : s())
                    })
                }()
            },
            r = function (e, t, n) {
                var r = function (o) {
                    t(function (t, i) {
                        t && o < e ? r(o + 1) : n(t, i)
                    })
                };
                e < 1 ? n() : r(1)
            },
            o = {
                eachLimit: n,
                retry: r
            };
        e.exports = o
    }, function (e, t, n) {
        "use strict";

        function r(e, t) {
            "function" == typeof e && (t = e, e = {});
            var n = this.options.ServiceDomain,
                r = e.AppId || this.options.appId,
                o = e.Region;
            n ? (n = n.replace(/\{\{AppId\}\}/gi, r || "").replace(/\{\{Region\}\}/gi, o || "").replace(/\{\{.*?\}\}/gi, ""), /^[a-zA-Z]+:\/\//.test(n) || (n = "https://" + n), "/" === n.slice(-1) && (n = n.slice(0, -1))) : n = o ? "https://cos." + o + ".myqcloud.com" : "https://service.cos.myqcloud.com", ee.call(this, {
                Action: "name/cos:GetService",
                url: n + "/",
                method: "GET"
            }, function (e, n) {
                if (e) return t(e);
                var r = n && n.ListAllMyBucketsResult && n.ListAllMyBucketsResult.Buckets && n.ListAllMyBucketsResult.Buckets.Bucket || [];
                r = oe.isArray(r) ? r : [r];
                var o = n && n.ListAllMyBucketsResult && n.ListAllMyBucketsResult.Owner || {};
                t(null, {
                    Buckets: r,
                    Owner: o,
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function o(e, t) {
            ee.call(this, {
                Action: "name/cos:HeadBucket",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                method: "HEAD"
            }, function (e, n) {
                t(e, n)
            })
        }

        function i(e, t) {
            var n = {};
            n.prefix = e.Prefix || "", n.delimiter = e.Delimiter, n.marker = e.Marker, n["max-keys"] = e.MaxKeys, n["encoding-type"] = e.EncodingType, ee.call(this, {
                Action: "name/cos:GetBucket",
                ResourceKey: n.prefix,
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                qs: n
            }, function (e, n) {
                if (e) return t(e);
                var r = n.ListBucketResult || {},
                    o = r.Contents || [],
                    i = r.CommonPrefixes || [];
                o = oe.isArray(o) ? o : [o], i = oe.isArray(i) ? i : [i];
                var a = oe.clone(r);
                oe.extend(a, {
                    Contents: o,
                    CommonPrefixes: i,
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, a)
            })
        }

        function a(e, t) {
            var n = this,
                r = {};
            r["x-cos-acl"] = e.ACL, r["x-cos-grant-read"] = e.GrantRead, r["x-cos-grant-write"] = e.GrantWrite, r["x-cos-grant-read-acp"] = e.GrantReadAcp, r["x-cos-grant-write-acp"] = e.GrantWriteAcp, r["x-cos-grant-full-control"] = e.GrantFullControl, ee.call(this, {
                Action: "name/cos:PutBucket",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: r
            }, function (r, o) {
                if (r) return t(r);
                var i = Z({
                    domain: n.options.Domain,
                    bucket: e.Bucket,
                    region: e.Region,
                    isLocation: !0
                });
                t(null, {
                    Location: i,
                    statusCode: o.statusCode,
                    headers: o.headers
                })
            })
        }

        function s(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteBucket",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                method: "DELETE"
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function c(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketACL",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "acl"
            }, function (e, n) {
                if (e) return t(e);
                var r = n.AccessControlPolicy || {},
                    o = r.Owner || {},
                    i = r.AccessControlList.Grant || [];
                i = oe.isArray(i) ? i : [i];
                var a = W(r);
                n.headers && n.headers["x-cos-acl"] && (a.ACL = n.headers["x-cos-acl"]), a = oe.extend(a, {
                    Owner: o,
                    Grants: i,
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, a)
            })
        }

        function u(e, t) {
            var n = e.Headers,
                r = "";
            if (e.AccessControlPolicy) {
                var o = oe.clone(e.AccessControlPolicy || {}),
                    i = o.Grants || o.Grant;
                i = oe.isArray(i) ? i : [i], delete o.Grant, delete o.Grants, o.AccessControlList = {
                    Grant: i
                }, r = oe.json2xml({
                    AccessControlPolicy: o
                }), n["Content-Type"] = "application/xml", n["Content-MD5"] = oe.binaryBase64(oe.md5(r))
            }
            oe.each(n, function (e, t) {
                0 === t.indexOf("x-cos-grant-") && (n[t] = Q(n[t]))
            }), ee.call(this, {
                Action: "name/cos:PutBucketACL",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: n,
                action: "acl",
                body: r
            }, function (e, n) {
                if (e) return t(e);
                t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function l(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketCORS",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "cors"
            }, function (e, n) {
                if (e)
                    if (404 === e.statusCode && e.error && "NoSuchCORSConfiguration" === e.error.Code) {
                        var r = {
                            CORSRules: [],
                            statusCode: e.statusCode
                        };
                        e.headers && (r.headers = e.headers), t(null, r)
                    } else t(e);
                else {
                    var o = n.CORSConfiguration || {},
                        i = o.CORSRules || o.CORSRule || [];
                    i = oe.clone(oe.isArray(i) ? i : [i]), oe.each(i, function (e) {
                        oe.each(["AllowedOrigin", "AllowedHeader", "AllowedMethod", "ExposeHeader"], function (t, n) {
                            var r = t + "s",
                                o = e[r] || e[t] || [];
                            delete e[t], e[r] = oe.isArray(o) ? o : [o]
                        })
                    }), t(null, {
                        CORSRules: i,
                        statusCode: n.statusCode,
                        headers: n.headers
                    })
                }
            })
        }

        function d(e, t) {
            var n = e.CORSConfiguration || {},
                r = n.CORSRules || e.CORSRules || [];
            r = oe.clone(oe.isArray(r) ? r : [r]), oe.each(r, function (e) {
                oe.each(["AllowedOrigin", "AllowedHeader", "AllowedMethod", "ExposeHeader"], function (t, n) {
                    var r = t + "s",
                        o = e[r] || e[t] || [];
                    delete e[r], e[t] = oe.isArray(o) ? o : [o]
                })
            });
            var o = oe.json2xml({
                    CORSConfiguration: {
                        CORSRule: r
                    }
                }),
                i = e.Headers;
            i["Content-Type"] = "application/xml", i["Content-MD5"] = oe.binaryBase64(oe.md5(o)), ee.call(this, {
                Action: "name/cos:PutBucketCORS",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                body: o,
                action: "cors",
                headers: i
            }, function (e, n) {
                if (e) return t(e);
                t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function f(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteBucketCORS",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "cors"
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode || e.statusCode,
                    headers: n.headers
                })
            })
        }

        function h(e, t) {
            var n = e.Policy,
                r = n;
            try {
                "string" == typeof n ? n = JSON.parse(r) : r = JSON.stringify(n)
            } catch (e) {
                t({
                    error: "Policy format error"
                })
            }
            var o = e.Headers;
            o["Content-Type"] = "application/json", o["Content-MD5"] = oe.binaryBase64(oe.md5(r)), ee.call(this, {
                Action: "name/cos:PutBucketPolicy",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                action: "policy",
                body: oe.isBrowser ? r : n,
                headers: o,
                json: !0
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function p(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteBucketPolicy",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "policy"
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode || e.statusCode,
                    headers: n.headers
                })
            })
        }

        function m(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketLocation",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "location"
            }, function (e, n) {
                if (e) return t(e);
                t(null, n)
            })
        }

        function g(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketPolicy",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "policy",
                rawBody: !0
            }, function (e, n) {
                if (e) return t(e.statusCode && 403 === e.statusCode ? {
                    ErrorStatus: "Access Denied"
                } : e.statusCode && 405 === e.statusCode ? {
                    ErrorStatus: "Method Not Allowed"
                } : e.statusCode && 404 === e.statusCode ? {
                    ErrorStatus: "Policy Not Found"
                } : e);
                var r = {};
                try {
                    r = JSON.parse(n.body)
                } catch (e) {}
                t(null, {
                    Policy: r,
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function y(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketTagging",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "tagging"
            }, function (e, n) {
                if (e)
                    if (404 !== e.statusCode || !e.error || "Not Found" !== e.error && "NoSuchTagSet" !== e.error.Code) t(e);
                    else {
                        var r = {
                            Tags: [],
                            statusCode: e.statusCode
                        };
                        e.headers && (r.headers = e.headers), t(null, r)
                    }
                else {
                    var o = [];
                    try {
                        o = n.Tagging.TagSet.Tag || []
                    } catch (e) {}
                    o = oe.clone(oe.isArray(o) ? o : [o]), t(null, {
                        Tags: o,
                        statusCode: n.statusCode,
                        headers: n.headers
                    })
                }
            })
        }

        function C(e, t) {
            var n = e.Tagging || {},
                r = n.TagSet || n.Tags || e.Tags || [];
            r = oe.clone(oe.isArray(r) ? r : [r]);
            var o = oe.json2xml({
                    Tagging: {
                        TagSet: {
                            Tag: r
                        }
                    }
                }),
                i = e.Headers;
            i["Content-Type"] = "application/xml", i["Content-MD5"] = oe.binaryBase64(oe.md5(o)), ee.call(this, {
                Action: "name/cos:PutBucketTagging",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                body: o,
                action: "tagging",
                headers: i
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function v(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteBucketTagging",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "tagging"
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function x(e, t) {
            var n = e.LifecycleConfiguration || {},
                r = n.Rules || e.Rules || [];
            r = oe.clone(r);
            var o = oe.json2xml({
                    LifecycleConfiguration: {
                        Rule: r
                    }
                }),
                i = e.Headers;
            i["Content-Type"] = "application/xml", i["Content-MD5"] = oe.binaryBase64(oe.md5(o)), ee.call(this, {
                Action: "name/cos:PutBucketLifecycle",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                body: o,
                action: "lifecycle",
                headers: i
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function k(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketLifecycle",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "lifecycle"
            }, function (e, n) {
                if (e)
                    if (404 === e.statusCode && e.error && "NoSuchLifecycleConfiguration" === e.error.Code) {
                        var r = {
                            Rules: [],
                            statusCode: e.statusCode
                        };
                        e.headers && (r.headers = e.headers), t(null, r)
                    } else t(e);
                else {
                    var o = [];
                    try {
                        o = n.LifecycleConfiguration.Rule || []
                    } catch (e) {}
                    o = oe.clone(oe.isArray(o) ? o : [o]), t(null, {
                        Rules: o,
                        statusCode: n.statusCode,
                        headers: n.headers
                    })
                }
            })
        }

        function S(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteBucketLifecycle",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "lifecycle"
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function A(e, t) {
            if (!e.VersioningConfiguration) return void t({
                error: "missing param VersioningConfiguration"
            });
            var n = e.VersioningConfiguration || {},
                r = oe.json2xml({
                    VersioningConfiguration: n
                }),
                o = e.Headers;
            o["Content-Type"] = "application/xml", o["Content-MD5"] = oe.binaryBase64(oe.md5(r)), ee.call(this, {
                Action: "name/cos:PutBucketVersioning",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                body: r,
                action: "versioning",
                headers: o
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function b(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketVersioning",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "versioning"
            }, function (e, n) {
                e || !n.VersioningConfiguration && (n.VersioningConfiguration = {}), t(e, n)
            })
        }

        function R(e, t) {
            var n = oe.clone(e.ReplicationConfiguration),
                r = oe.json2xml({
                    ReplicationConfiguration: n
                });
            r = r.replace(/<(\/?)Rules>/gi, "<$1Rule>"), r = r.replace(/<(\/?)Tags>/gi, "<$1Tag>");
            var o = e.Headers;
            o["Content-Type"] = "application/xml", o["Content-MD5"] = oe.binaryBase64(oe.md5(r)), ee.call(this, {
                Action: "name/cos:PutBucketReplication",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                body: r,
                action: "replication",
                headers: o
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function T(e, t) {
            ee.call(this, {
                Action: "name/cos:GetBucketReplication",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "replication"
            }, function (e, n) {
                if (e)
                    if (404 !== e.statusCode || !e.error || "Not Found" !== e.error && "ReplicationConfigurationnotFoundError" !== e.error.Code) t(e);
                    else {
                        var r = {
                            ReplicationConfiguration: {
                                Rules: []
                            },
                            statusCode: e.statusCode
                        };
                        e.headers && (r.headers = e.headers), t(null, r)
                    }
                else e || !n.ReplicationConfiguration && (n.ReplicationConfiguration = {}), n.ReplicationConfiguration.Rule && (n.ReplicationConfiguration.Rules = n.ReplicationConfiguration.Rule, delete n.ReplicationConfiguration.Rule), t(e, n)
            })
        }

        function E(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteBucketReplication",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                action: "replication"
            }, function (e, n) {
                return e && 204 === e.statusCode ? t(null, {
                    statusCode: e.statusCode
                }) : e ? t(e) : void t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function w(e, t) {
            ee.call(this, {
                Action: "name/cos:HeadObject",
                method: "HEAD",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                VersionId: e.VersionId,
                headers: e.Headers
            }, function (n, r) {
                if (n) {
                    var o = n.statusCode;
                    return e.Headers["If-Modified-Since"] && o && 304 === o ? t(null, {
                        NotModified: !0,
                        statusCode: o
                    }) : t(n)
                }
                if (r.headers) {
                    var i = r.headers;
                    r.ETag = i.etag || i.Etag || i.ETag || ""
                }
                t(null, r)
            })
        }

        function _(e, t) {
            var n = {};
            n.prefix = e.Prefix || "", n.delimiter = e.Delimiter, n["key-marker"] = e.KeyMarker, n["version-id-marker"] = e.VersionIdMarker, n["max-keys"] = e.MaxKeys, n["encoding-type"] = e.EncodingType, ee.call(this, {
                Action: "name/cos:GetBucketObjectVersions",
                ResourceKey: n.prefix,
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                qs: n,
                action: "versions"
            }, function (e, n) {
                if (e) return t(e);
                var r = n.ListVersionsResult || {},
                    o = r.DeleteMarker || [];
                o = oe.isArray(o) ? o : [o];
                var i = r.Version || [];
                i = oe.isArray(i) ? i : [i];
                var a = oe.clone(r);
                delete a.DeleteMarker, delete a.Version, oe.extend(a, {
                    DeleteMarkers: o,
                    Versions: i,
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, a)
            })
        }

        function N(e, t) {
            var n = {};
            n["response-content-type"] = e.ResponseContentType, n["response-content-language"] = e.ResponseContentLanguage, n["response-expires"] = e.ResponseExpires, n["response-cache-control"] = e.ResponseCacheControl, n["response-content-disposition"] = e.ResponseContentDisposition, n["response-content-encoding"] = e.ResponseContentEncoding, ee.call(this, {
                Action: "name/cos:GetObject",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                VersionId: e.VersionId,
                headers: e.Headers,
                qs: n,
                rawBody: !0
            }, function (n, r) {
                if (n) {
                    var o = n.statusCode;
                    return e.Headers["If-Modified-Since"] && o && 304 === o ? t(null, {
                        NotModified: !0
                    }) : t(n)
                }
                var i = {};
                if (i.Body = r.body, r && r.headers) {
                    var a = r.headers;
                    i.ETag = a.etag || a.Etag || a.ETag || ""
                }
                oe.extend(i, {
                    statusCode: r.statusCode,
                    headers: r.headers
                }), t(null, i)
            })
        }

        function B(e, t) {
            var n = this,
                r = e.ContentLength,
                o = oe.throttleOnProgress.call(n, r, e.onProgress);
            oe.getBodyMd5(n.options.UploadCheckContentMd5, e.Body, function (i) {
                i && (e.Headers["Content-MD5"] = oe.binaryBase64(i)), void 0 !== e.ContentLength && (e.Headers["Content-Length"] = e.ContentLength), ee.call(n, {
                    Action: "name/cos:PutObject",
                    TaskId: e.TaskId,
                    method: "PUT",
                    Bucket: e.Bucket,
                    Region: e.Region,
                    Key: e.Key,
                    headers: e.Headers,
                    body: e.Body,
                    onProgress: o
                }, function (i, a) {
                    if (i) return o(null, !0), t(i);
                    if (o({
                            loaded: r,
                            total: r
                        }, !0), a && a.headers) {
                        var s = a.headers,
                            c = s.etag || s.Etag || s.ETag || "",
                            u = Z({
                                ForcePathStyle: n.options.ForcePathStyle,
                                protocol: n.options.Protocol,
                                domain: n.options.Domain,
                                bucket: e.Bucket,
                                region: e.Region,
                                object: e.Key
                            });
                        return u = u.substr(u.indexOf("://") + 3), t(null, {
                            Location: u,
                            ETag: c,
                            statusCode: a.statusCode,
                            headers: s
                        })
                    }
                    t(null, a)
                })
            })
        }

        function D(e, t) {
            var n = this,
                r = {};
            r["Cache-Control"] = e.CacheControl, r["Content-Disposition"] = e.ContentDisposition, r["Content-Encoding"] = e.ContentEncoding, r["Content-MD5"] = e.ContentMD5, r["Content-Length"] = e.ContentLength, r["Content-Type"] = e.ContentType, r.Expect = e.Expect, r.Expires = e.Expires, r["x-cos-acl"] = e.ACL, r["x-cos-grant-read"] = e.GrantRead, r["x-cos-grant-write"] = e.GrantWrite, r["x-cos-grant-full-control"] = e.GrantFullControl, r["x-cos-storage-class"] = e.StorageClass;
            var o = e.FilePath;
            for (var i in e) i.indexOf("x-cos-meta-") > -1 && (r[i] = e[i]);
            var a = oe.throttleOnProgress.call(n, r["Content-Length"], e.onProgress);
            ee.call(this, {
                Action: "name/cos:PostObject",
                method: "POST",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                headers: r,
                filePath: o,
                onProgress: a
            }, function (r, o) {
                if (a(null, !0), r) return t(r);
                if (o && o.headers) {
                    var i = o.headers,
                        s = i.etag || i.Etag || i.ETag || "",
                        c = Z({
                            ForcePathStyle: n.options.ForcePathStyle,
                            protocol: n.options.Protocol,
                            domain: n.options.Domain,
                            bucket: e.Bucket,
                            region: e.Region,
                            object: e.Key,
                            isLocation: !0
                        });
                    return t(null, {
                        Location: c,
                        statusCode: o.statusCode,
                        headers: i,
                        ETag: s
                    })
                }
                t(null, o)
            })
        }

        function O(e, t) {
            ee.call(this, {
                Action: "name/cos:DeleteObject",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                headers: e.Headers,
                VersionId: e.VersionId
            }, function (e, n) {
                if (e) {
                    var r = e.statusCode;
                    return r && 204 === r ? t(null, {
                        statusCode: r
                    }) : r && 404 === r ? t(null, {
                        BucketNotFound: !0,
                        statusCode: r
                    }) : t(e)
                }
                t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function P(e, t) {
            ee.call(this, {
                Action: "name/cos:GetObjectACL",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                headers: e.Headers,
                action: "acl"
            }, function (e, n) {
                if (e) return t(e);
                var r = n.AccessControlPolicy || {},
                    o = r.Owner || {},
                    i = r.AccessControlList && r.AccessControlList.Grant || [];
                i = oe.isArray(i) ? i : [i];
                var a = W(r);
                n.headers && n.headers["x-cos-acl"] && (a.ACL = n.headers["x-cos-acl"]), a = oe.extend(a, {
                    Owner: o,
                    Grants: i,
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, a)
            })
        }

        function I(e, t) {
            var n = e.Headers,
                r = "";
            if (e.AccessControlPolicy) {
                var o = oe.clone(e.AccessControlPolicy || {}),
                    i = o.Grants || o.Grant;
                i = oe.isArray(i) ? i : [i], delete o.Grant, delete o.Grants, o.AccessControlList = {
                    Grant: i
                }, r = oe.json2xml({
                    AccessControlPolicy: o
                }), n["Content-Type"] = "application/xml", n["Content-MD5"] = oe.binaryBase64(oe.md5(r))
            }
            oe.each(n, function (e, t) {
                0 === t.indexOf("x-cos-grant-") && (n[t] = Q(n[t]))
            }), ee.call(this, {
                Action: "name/cos:PutObjectACL",
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                action: "acl",
                headers: n,
                body: r
            }, function (e, n) {
                if (e) return t(e);
                t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function M(e, t) {
            var n = e.Headers;
            n.Origin = e.Origin, n["Access-Control-Request-Method"] = e.AccessControlRequestMethod, n["Access-Control-Request-Headers"] = e.AccessControlRequestHeaders, ee.call(this, {
                Action: "name/cos:OptionsObject",
                method: "OPTIONS",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                headers: n
            }, function (e, n) {
                if (e) return e.statusCode && 403 === e.statusCode ? t(null, {
                    OptionsForbidden: !0,
                    statusCode: e.statusCode
                }) : t(e);
                var r = n.headers || {};
                t(null, {
                    AccessControlAllowOrigin: r["access-control-allow-origin"],
                    AccessControlAllowMethods: r["access-control-allow-methods"],
                    AccessControlAllowHeaders: r["access-control-allow-headers"],
                    AccessControlExposeHeaders: r["access-control-expose-headers"],
                    AccessControlMaxAge: r["access-control-max-age"],
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function L(e, t) {
            var n = e.CopySource || "",
                r = n.match(/^([^.]+-\d+)\.cos(v6)?\.([^.]+)\.[^\/]+\/(.+)$/);
            if (!r) return void t({
                error: "CopySource format error"
            });
            var o = r[1],
                i = r[3],
                a = decodeURIComponent(r[4]);
            ee.call(this, {
                Scope: [{
                    action: "name/cos:GetObject",
                    bucket: o,
                    region: i,
                    prefix: a
                }, {
                    action: "name/cos:PutObject",
                    bucket: e.Bucket,
                    region: e.Region,
                    prefix: e.Key
                }],
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                VersionId: e.VersionId,
                headers: e.Headers
            }, function (e, n) {
                if (e) return t(e);
                var r = oe.clone(n.CopyObjectResult || {});
                oe.extend(r, {
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, r)
            })
        }

        function F(e, t) {
            var n = e.CopySource || "",
                r = n.match(/^([^.]+-\d+)\.cos(v6)?\.([^.]+)\.[^\/]+\/(.+)$/);
            if (!r) return void t({
                error: "CopySource format error"
            });
            var o = r[1],
                i = r[3],
                a = decodeURIComponent(r[4]);
            ee.call(this, {
                Scope: [{
                    action: "name/cos:GetObject",
                    bucket: o,
                    region: i,
                    prefix: a
                }, {
                    action: "name/cos:PutObject",
                    bucket: e.Bucket,
                    region: e.Region,
                    prefix: e.Key
                }],
                method: "PUT",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                VersionId: e.VersionId,
                qs: {
                    partNumber: e.PartNumber,
                    uploadId: e.UploadId
                },
                headers: e.Headers
            }, function (e, n) {
                if (e) return t(e);
                var r = oe.clone(n.CopyPartResult || {});
                oe.extend(r, {
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, r)
            })
        }

        function U(e, t) {
            var n = e.Objects || [],
                r = e.Quiet;
            n = oe.isArray(n) ? n : [n];
            var o = oe.json2xml({
                    Delete: {
                        Object: n,
                        Quiet: r || !1
                    }
                }),
                i = e.Headers;
            i["Content-Type"] = "application/xml", i["Content-MD5"] = oe.binaryBase64(oe.md5(o));
            var a = oe.map(n, function (t) {
                return {
                    action: "name/cos:DeleteObject",
                    bucket: e.Bucket,
                    region: e.Region,
                    prefix: t.Key
                }
            });
            ee.call(this, {
                Scope: a,
                method: "POST",
                Bucket: e.Bucket,
                Region: e.Region,
                body: o,
                action: "delete",
                headers: i
            }, function (e, n) {
                if (e) return t(e);
                var r = n.DeleteResult || {},
                    o = r.Deleted || [],
                    i = r.Error || [];
                o = oe.isArray(o) ? o : [o], i = oe.isArray(i) ? i : [i];
                var a = oe.clone(r);
                oe.extend(a, {
                    Error: i,
                    Deleted: o,
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, a)
            })
        }

        function j(e, t) {
            var n = e.Headers;
            if (!e.RestoreRequest) return void t({
                error: "missing param RestoreRequest"
            });
            var r = e.RestoreRequest || {},
                o = oe.json2xml({
                    RestoreRequest: r
                });
            n["Content-Type"] = "application/xml", n["Content-MD5"] = oe.binaryBase64(oe.md5(o)), ee.call(this, {
                Action: "name/cos:RestoreObject",
                method: "POST",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                VersionId: e.VersionId,
                body: o,
                action: "restore",
                headers: n
            }, function (e, n) {
                t(e, n)
            })
        }

        function K(e, t) {
            ee.call(this, {
                Action: "name/cos:InitiateMultipartUpload",
                method: "POST",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                action: "uploads",
                headers: e.Headers
            }, function (e, n) {
                return e ? t(e) : (n = oe.clone(n || {})) && n.InitiateMultipartUploadResult ? t(null, oe.extend(n.InitiateMultipartUploadResult, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })) : void t(null, n)
            })
        }

        function H(e, t) {
            var n = this;
            oe.getFileSize("multipartUpload", e, function () {
                oe.getBodyMd5(n.options.UploadCheckContentMd5, e.Body, function (r) {
                    r && (e.Headers["Content-MD5"] = oe.binaryBase64(r)), ee.call(n, {
                        Action: "name/cos:UploadPart",
                        TaskId: e.TaskId,
                        method: "PUT",
                        Bucket: e.Bucket,
                        Region: e.Region,
                        Key: e.Key,
                        qs: {
                            partNumber: e.PartNumber,
                            uploadId: e.UploadId
                        },
                        headers: e.Headers,
                        onProgress: e.onProgress,
                        body: e.Body || null
                    }, function (e, n) {
                        if (e) return t(e);
                        if (n && n.headers) {
                            var r = n.headers;
                            n.ETag = r.etag || r.Etag || r.ETag || ""
                        }
                        t(null, n)
                    })
                })
            })
        }

        function z(e, t) {
            for (var n = this, r = e.UploadId, o = e.Parts, i = 0, a = o.length; i < a; i++) 0 !== o[i].ETag.indexOf('"') && (o[i].ETag = '"' + o[i].ETag + '"');
            var s = oe.json2xml({
                    CompleteMultipartUpload: {
                        Part: o
                    }
                }),
                c = e.Headers;
            c["Content-Type"] = "application/xml", c["Content-MD5"] = oe.binaryBase64(oe.md5(s)), ee.call(this, {
                Action: "name/cos:CompleteMultipartUpload",
                method: "POST",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                qs: {
                    uploadId: r
                },
                body: s,
                headers: c
            }, function (r, o) {
                if (r) return t(r);
                var i = Z({
                        ForcePathStyle: n.options.ForcePathStyle,
                        protocol: n.options.Protocol,
                        domain: n.options.Domain,
                        bucket: e.Bucket,
                        region: e.Region,
                        object: e.Key,
                        isLocation: !0
                    }),
                    a = o.CompleteMultipartUploadResult || {},
                    s = oe.extend(a, {
                        Location: i,
                        statusCode: o.statusCode,
                        headers: o.headers
                    });
                t(null, s)
            })
        }

        function G(e, t) {
            var n = {};
            n.delimiter = e.Delimiter, n["encoding-type"] = e.EncodingType, n.prefix = e.Prefix || "", n["max-uploads"] = e.MaxUploads, n["key-marker"] = e.KeyMarker, n["upload-id-marker"] = e.UploadIdMarker, n = oe.clearKey(n), ee.call(this, {
                Action: "name/cos:ListMultipartUploads",
                ResourceKey: n.prefix,
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                headers: e.Headers,
                qs: n,
                action: "uploads"
            }, function (e, n) {
                if (e) return t(e);
                if (n && n.ListMultipartUploadsResult) {
                    var r = n.ListMultipartUploadsResult.Upload || [],
                        o = n.ListMultipartUploadsResult.CommonPrefixes || [];
                    o = oe.isArray(o) ? o : [o], r = oe.isArray(r) ? r : [r], n.ListMultipartUploadsResult.Upload = r, n.ListMultipartUploadsResult.CommonPrefixes = o
                }
                var i = oe.clone(n.ListMultipartUploadsResult || {});
                oe.extend(i, {
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, i)
            })
        }

        function q(e, t) {
            var n = {};
            n.uploadId = e.UploadId, n["encoding-type"] = e.EncodingType, n["max-parts"] = e.MaxParts, n["part-number-marker"] = e.PartNumberMarker, ee.call(this, {
                Action: "name/cos:ListParts",
                method: "GET",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                headers: e.Headers,
                qs: n
            }, function (e, n) {
                if (e) return t(e);
                var r = n.ListPartsResult || {},
                    o = r.Part || [];
                o = oe.isArray(o) ? o : [o], r.Part = o;
                var i = oe.clone(r);
                oe.extend(i, {
                    statusCode: n.statusCode,
                    headers: n.headers
                }), t(null, i)
            })
        }

        function V(e, t) {
            var n = {};
            n.uploadId = e.UploadId, ee.call(this, {
                Action: "name/cos:AbortMultipartUpload",
                method: "DELETE",
                Bucket: e.Bucket,
                Region: e.Region,
                Key: e.Key,
                headers: e.Headers,
                qs: n
            }, function (e, n) {
                if (e) return t(e);
                t(null, {
                    statusCode: n.statusCode,
                    headers: n.headers
                })
            })
        }

        function X(e) {
            var t = this;
            return oe.getAuth({
                SecretId: e.SecretId || this.options.SecretId || "",
                SecretKey: e.SecretKey || this.options.SecretKey || "",
                Method: e.Method,
                Key: e.Key,
                Query: e.Query,
                Headers: e.Headers,
                Expires: e.Expires,
                SystemClockOffset: t.options.SystemClockOffset
            })
        }

        function $(e, t) {
            var n = this,
                r = Z({
                    ForcePathStyle: n.options.ForcePathStyle,
                    protocol: e.Protocol || n.options.Protocol,
                    domain: n.options.Domain,
                    bucket: e.Bucket,
                    region: e.Region,
                    object: e.Key
                });
            if (void 0 !== e.Sign && !e.Sign) return t(null, {
                Url: r
            }), r;
            var o = Y.call(this, {
                Action: "PUT" === (e.Method || "").toUpperCase() ? "name/cos:PutObject" : "name/cos:GetObject",
                Bucket: e.Bucket || "",
                Region: e.Region || "",
                Method: e.Method || "get",
                Key: e.Key,
                Expires: e.Expires
            }, function (e, n) {
                if (t) {
                    if (e) return void t(e);
                    var o = r;
                    o += "?" + (n.Authorization.indexOf("q-signature") > -1 ? n.Authorization : "sign=" + encodeURIComponent(n.Authorization)), n.XCosSecurityToken && (o += "&x-cos-security-token=" + n.XCosSecurityToken), n.ClientIP && (o += "&clientIP=" + n.ClientIP), n.ClientUA && (o += "&clientUA=" + n.ClientUA), n.Token && (o += "&token=" + n.Token), setTimeout(function () {
                        t(null, {
                            Url: o
                        })
                    })
                }
            });
            return o ? r + "?" + o.Authorization + (o.XCosSecurityToken ? "&x-cos-security-token=" + o.XCosSecurityToken : "") : r
        }

        function W(e) {
            var t = {
                    GrantFullControl: [],
                    GrantWrite: [],
                    GrantRead: [],
                    GrantReadAcp: [],
                    GrantWriteAcp: [],
                    ACL: ""
                },
                n = {
                    FULL_CONTROL: "GrantFullControl",
                    WRITE: "GrantWrite",
                    READ: "GrantRead",
                    READ_ACP: "GrantReadAcp",
                    WRITE_ACP: "GrantWriteAcp"
                },
                r = e.AccessControlList.Grant;
            r && (r = oe.isArray(r) ? r : [r]);
            var o = {
                READ: 0,
                WRITE: 0,
                FULL_CONTROL: 0
            };
            return r.length && oe.each(r, function (r) {
                "qcs::cam::anyone:anyone" === r.Grantee.ID || "http://cam.qcloud.com/groups/global/AllUsers" === r.Grantee.URI ? o[r.Permission] = 1 : r.Grantee.ID !== e.Owner.ID && t[n[r.Permission]].push('id="' + r.Grantee.ID + '"')
            }), o.FULL_CONTROL || o.WRITE && o.READ ? t.ACL = "public-read-write" : o.READ ? t.ACL = "public-read" : t.ACL = "private", oe.each(n, function (e) {
                t[e] = Q(t[e].join(","))
            }), t
        }

        function Q(e) {
            var t, n, r = e.split(","),
                o = {};
            for (t = 0; t < r.length;) n = r[t].trim(), o[n] ? r.splice(t, 1) : (o[n] = !0, r[t] = n, t++);
            return r.join(",")
        }

        function Z(e) {
            var t = e.bucket,
                n = t.substr(0, t.lastIndexOf("-")),
                r = t.substr(t.lastIndexOf("-") + 1),
                o = e.domain,
                i = e.region,
                a = e.object;
            o || (o = ["cn-south", "cn-south-2", "cn-north", "cn-east", "cn-southwest", "sg"].indexOf(i) > -1 ? "{Region}.myqcloud.com" : "cos.{Region}.myqcloud.com", e.ForcePathStyle || (o = "{Bucket}." + o)), o = o.replace(/\{\{AppId\}\}/gi, r).replace(/\{\{Bucket\}\}/gi, n).replace(/\{\{Region\}\}/gi, i).replace(/\{\{.*?\}\}/gi, ""), o = o.replace(/\{AppId\}/gi, r).replace(/\{BucketName\}/gi, n).replace(/\{Bucket\}/gi, t).replace(/\{Region\}/gi, i).replace(/\{.*?\}/gi, ""), /^[a-zA-Z]+:\/\//.test(o) || (o = "https://" + o), "/" === o.slice(-1) && (o = o.slice(0, -1));
            var s = o;
            return e.ForcePathStyle && (s += "/" + t), s += "/", a && (s += oe.camSafeUrlEncode(a).replace(/%2F/g, "/")), e.isLocation && (s = s.replace(/^https?:\/\//, "")), s
        }

        function Y(e, t) {
            var n = oe.clone(e.Headers);
            delete n["Content-Type"], delete n["Cache-Control"], oe.each(n, function (e, t) {
                "" === e && delete n[t]
            });
            var r = function (e) {
                    var n = !1,
                        r = e.Authorization;
                    if (r)
                        if (r.indexOf(" ") > -1) n = !1;
                        else if (r.indexOf("q-sign-algorithm=") > -1 && r.indexOf("q-ak=") > -1 && r.indexOf("q-sign-time=") > -1 && r.indexOf("q-key-time=") > -1 && r.indexOf("q-url-param-list=") > -1) n = !0;
                    else try {
                        r = re.atob(r), r.indexOf("a=") > -1 && r.indexOf("k=") > -1 && r.indexOf("t=") > -1 && r.indexOf("r=") > -1 && r.indexOf("b=") > -1 && (n = !0)
                    } catch (e) {}
                    n ? t && t(null, e) : t && t("authorization error")
                },
                o = this,
                i = e.Bucket || "",
                a = e.Region || "",
                s = "name/cos:PostObject" !== e.Action && e.Key ? e.Key : "";
            o.options.ForcePathStyle && i && (s = i + "/" + s);
            var c = "/" + s,
                u = {},
                l = e.Scope;
            if (!l) {
                var d = e.Action || "",
                    f = e.ResourceKey || e.Key || "";
                l = e.Scope || [{
                    action: d,
                    bucket: i,
                    region: a,
                    prefix: f
                }]
            }
            var h = oe.md5(JSON.stringify(l));
            o._StsCache = o._StsCache || [],
                function () {
                    var e, t;
                    for (e = o._StsCache.length - 1; e >= 0; e--) {
                        t = o._StsCache[e];
                        var n = Math.round(oe.getSkewTime(o.options.SystemClockOffset) / 1e3) + 30;
                        if (t.StartTime && n < t.StartTime || n >= t.ExpiredTime) o._StsCache.splice(e, 1);
                        else if (!t.ScopeLimit || t.ScopeLimit && t.ScopeKey === h) {
                            u = t;
                            break
                        }
                    }
                }();
            var p = function () {
                var t = oe.getAuth({
                        SecretId: u.TmpSecretId,
                        SecretKey: u.TmpSecretKey,
                        Method: e.Method,
                        Pathname: c,
                        Query: e.Query,
                        Headers: n,
                        Expires: e.Expires,
                        SystemClockOffset: o.options.SystemClockOffset
                    }),
                    i = {
                        Authorization: t,
                        XCosSecurityToken: u.XCosSecurityToken || "",
                        Token: u.Token || "",
                        ClientIP: u.ClientIP || "",
                        ClientUA: u.ClientUA || ""
                    };
                r(i)
            };
            if (u.ExpiredTime && u.ExpiredTime - oe.getSkewTime(o.options.SystemClockOffset) / 1e3 > 60) p();
            else if (o.options.getAuthorization) o.options.getAuthorization.call(o, {
                Bucket: i,
                Region: a,
                Method: e.Method,
                Key: s,
                Pathname: c,
                Query: e.Query,
                Headers: n,
                Scope: l
            }, function (e) {
                "string" == typeof e && (e = {
                    Authorization: e
                }), e.TmpSecretId && e.TmpSecretKey && e.XCosSecurityToken && e.ExpiredTime ? (u = e || {}, u.Scope = l, u.ScopeKey = h, o._StsCache.push(u), p()) : r(e)
            });
            else {
                if (!o.options.getSTS) return function () {
                    var t = oe.getAuth({
                            SecretId: e.SecretId || o.options.SecretId,
                            SecretKey: e.SecretKey || o.options.SecretKey,
                            Method: e.Method,
                            Pathname: c,
                            Query: e.Query,
                            Headers: n,
                            Expires: e.Expires,
                            SystemClockOffset: o.options.SystemClockOffset
                        }),
                        i = {
                            Authorization: t,
                            XCosSecurityToken: o.options.XCosSecurityToken
                        };
                    return r(i), i
                }();
                o.options.getSTS.call(o, {
                    Bucket: i,
                    Region: a
                }, function (e) {
                    u = e || {}, u.Scope = l, u.ScopeKey = h, u.TmpSecretId = u.SecretId, u.TmpSecretKey = u.SecretKey, o._StsCache.push(u), p()
                })
            }
            return ""
        }

        function J(e) {
            var t = !1,
                n = !1,
                r = e.headers && (e.headers.date || e.headers.Date) || "";
            try {
                var o = e.error.Code,
                    i = e.error.Message;
                ("RequestTimeTooSkewed" === o || "AccessDenied" === o && "Request has expired" === i) && (n = !0)
            } catch (e) {}
            if (e)
                if (n && r) {
                    var a = Date.parse(r);
                    this.options.CorrectClockSkew && Math.abs(oe.getSkewTime(this.options.SystemClockOffset) - a) >= 3e4 && (console.error("error: Local time is too skewed."), this.options.SystemClockOffset = a - Date.now(), t = !0)
                } else 5 === Math.round(e.statusCode / 100) && (t = !0);
            return t
        }

        function ee(e, t) {
            var n = this;
            !e.headers && (e.headers = {}), !e.qs && (e.qs = {}), e.VersionId && (e.qs.versionId = e.VersionId), e.qs = oe.clearKey(e.qs), e.headers && (e.headers = oe.clearKey(e.headers)), e.qs && (e.qs = oe.clearKey(e.qs));
            var r = oe.clone(e.qs);
            e.action && (r[e.action] = "");
            var o = function (i) {
                var a = n.options.SystemClockOffset;
                Y.call(n, {
                    Bucket: e.Bucket || "",
                    Region: e.Region || "",
                    Method: e.method,
                    Key: e.Key,
                    Query: r,
                    Headers: e.headers,
                    Action: e.Action,
                    ResourceKey: e.ResourceKey,
                    Scope: e.Scope
                }, function (r, s) {
                    e.AuthData = s, te.call(n, e, function (r, s) {
                        r && i < 2 && (a !== n.options.SystemClockOffset || J.call(n, r)) ? (e.headers && (delete e.headers.Authorization, delete e.headers.token, delete e.headers.clientIP, delete e.headers.clientUA, delete e.headers["x-cos-security-token"]), o(i + 1)) : t(r, s)
                    })
                })
            };
            o(0)
        }

        function te(e, t) {
            var n = this,
                r = e.TaskId;
            if (!r || n._isRunningTask(r)) {
                var o = e.Bucket,
                    i = e.Region,
                    a = e.Key,
                    s = e.method || "GET",
                    c = e.url,
                    u = e.body,
                    l = e.json,
                    d = e.rawBody;
                c = c || Z({
                    ForcePathStyle: n.options.ForcePathStyle,
                    protocol: n.options.Protocol,
                    domain: n.options.Domain,
                    bucket: o,
                    region: i,
                    object: a
                }), e.action && (c = c + "?" + e.action);
                var f = {
                    method: s,
                    url: c,
                    headers: e.headers,
                    qs: e.qs,
                    filePath: e.filePath,
                    body: u,
                    json: l
                };
                f.headers.Authorization = e.AuthData.Authorization, e.AuthData.Token && (f.headers.token = e.AuthData.Token), e.AuthData.ClientIP && (f.headers.clientIP = e.AuthData.ClientIP), e.AuthData.ClientUA && (f.headers.clientUA = e.AuthData.ClientUA), e.AuthData.XCosSecurityToken && (f.headers["x-cos-security-token"] = e.AuthData.XCosSecurityToken), f.headers && (f.headers = oe.clearKey(f.headers)), f = oe.clearKey(f), e.onProgress && "function" == typeof e.onProgress && (f.onProgress = function (t) {
                    if (!r || n._isRunningTask(r)) {
                        var o = t ? t.loaded : 0;
                        e.onProgress({
                            loaded: o,
                            total: t.total
                        })
                    }
                }), n.options.ForcePathStyle && (f.pathStyle = n.options.ForcePathStyle);
                var h = ne(f, function (e, o, i) {
                        var a, s = function (e, i) {
                            if (r && n.off("inner-kill-task", p), !a) {
                                a = !0;
                                var s = {};
                                o && o.statusCode && (s.statusCode = o.statusCode), o && o.headers && (s.headers = o.headers), e ? (e = oe.extend(e || {}, s), t(e, null)) : (i = oe.extend(i || {}, s), t(null, i))
                            }
                        };
                        if (e) return void s({
                            error: e
                        });
                        var c;
                        try {
                            c = oe.xml2json(i) || {}
                        } catch (e) {
                            c = i || {}
                        }
                        var u = o.statusCode;
                        return 2 !== Math.floor(u / 100) ? void s({
                            error: c.Error || c
                        }) : (d && (c = {}, c.body = i), c.Error ? void s({
                            error: c.Error
                        }) : void s(null, c))
                    }),
                    p = function (e) {
                        e.TaskId === r && (h && h.abort && h.abort(), n.off("inner-kill-task", p))
                    };
                r && n.on("inner-kill-task", p)
            }
        }
        var ne = n(9),
            re = n(1),
            oe = n(0),
            ie = {
                getService: r,
                putBucket: a,
                getBucket: i,
                headBucket: o,
                deleteBucket: s,
                getBucketAcl: c,
                putBucketAcl: u,
                getBucketCors: l,
                putBucketCors: d,
                deleteBucketCors: f,
                getBucketLocation: m,
                putBucketTagging: C,
                getBucketTagging: y,
                deleteBucketTagging: v,
                getBucketPolicy: g,
                putBucketPolicy: h,
                deleteBucketPolicy: p,
                getBucketLifecycle: k,
                putBucketLifecycle: x,
                deleteBucketLifecycle: S,
                putBucketVersioning: A,
                getBucketVersioning: b,
                putBucketReplication: R,
                getBucketReplication: T,
                deleteBucketReplication: E,
                getObject: N,
                headObject: w,
                listObjectVersions: _,
                putObject: B,
                postObject: D,
                deleteObject: O,
                getObjectAcl: P,
                putObjectAcl: I,
                optionsObject: M,
                putObjectCopy: L,
                deleteMultipleObject: U,
                restoreObject: j,
                uploadPartCopy: F,
                multipartInit: K,
                multipartUpload: H,
                multipartComplete: z,
                multipartList: G,
                multipartListPart: q,
                multipartAbort: V,
                getObjectUrl: $,
                getAuth: X
            };
        e.exports.init = function (e, t) {
            t.transferToTaskMethod(ie, "postObject"), oe.each(ie, function (t, n) {
                e.prototype[n] = oe.apiWrapper(n, t)
            })
        }
    }, function (e, t, n) {
        var r = n(0),
            o = {},
            i = function (e, t) {
                o[t] = e[t], e[t] = function (e, n) {
                    e.SkipTask ? o[t].call(this, e, n) : this._addTask(t, e, n)
                }
            },
            a = function (e) {
                var t = [],
                    n = {},
                    i = 0,
                    a = 0,
                    s = function (e) {
                        var t = {
                            id: e.id,
                            Bucket: e.Bucket,
                            Region: e.Region,
                            Key: e.Key,
                            FilePath: e.FilePath,
                            state: e.state,
                            loaded: e.loaded,
                            size: e.size,
                            speed: e.speed,
                            percent: e.percent,
                            hashPercent: e.hashPercent,
                            error: e.error
                        };
                        return e.FilePath && (t.FilePath = e.FilePath), t
                    },
                    c = function () {
                        e.emit("list-update", {
                            list: r.map(t, s)
                        })
                    },
                    u = function () {
                        if (t.length > e.options.UploadQueueSize) {
                            var n;
                            for (n = 0; n < t.length && t.length > e.options.UploadQueueSize && n < a; n++) t[n] && "waiting" === t[n].state || (t.splice(n, 1), a--)
                        }
                    },
                    l = function () {
                        if (a < t.length && i < e.options.FileParallelLimit) {
                            var n = t[a];
                            if ("waiting" === n.state) {
                                i++, n.state = "checking";
                                var s = r.formatParams(n.api, n.params);
                                o[n.api].call(e, s, function (t, r) {
                                    e._isRunningTask(n.id) && ("checking" !== n.state && "uploading" !== n.state || (n.state = t ? "error" : "success", t && (n.error = t), i--, c(), l(e), n.callback && n.callback(t, r), "success" === n.state && (n.params && (delete n.params.Body, delete n.params), delete n.callback)), u())
                                }), c()
                            }
                            a++, l(e)
                        }
                    },
                    d = function (t, r) {
                        var o = n[t];
                        if (o) {
                            var a = o && "waiting" === o.state,
                                s = o && ("checking" === o.state || "uploading" === o.state);
                            if ("canceled" === r && "canceled" !== o.state || "paused" === r && a || "paused" === r && s) {
                                if ("paused" === r && o.params.Body && "function" == typeof o.params.Body.pipe) return void console.error("stream not support pause");
                                o.state = r, e.emit("inner-kill-task", {
                                    TaskId: t,
                                    toState: r
                                }), c(), s && (i--, l(e)), "canceled" === r && (o.params && (delete o.params.Body, delete o.params), delete o.callback)
                            }
                            u()
                        }
                    };
                e._addTasks = function (t) {
                    r.each(t, function (t) {
                        e._addTask(t.api, t.params, t.callback, !0)
                    }), c()
                }, e._addTask = function (o, i, a, s) {
                    i = r.formatParams(o, i);
                    var d = r.uuid();
                    i.TaskId = d, i.TaskReady && i.TaskReady(d);
                    var f = {
                            params: i,
                            callback: a,
                            api: o,
                            index: t.length,
                            id: d,
                            Bucket: i.Bucket,
                            Region: i.Region,
                            Key: i.Key,
                            FilePath: i.FilePath || "",
                            state: "waiting",
                            loaded: 0,
                            size: 0,
                            speed: 0,
                            percent: 0,
                            hashPercent: 0,
                            error: null
                        },
                        h = i.onHashProgress;
                    i.onHashProgress = function (t) {
                        e._isRunningTask(f.id) && (f.hashPercent = t.percent, h && h(t), c())
                    };
                    var p = i.onProgress;
                    return i.onProgress = function (t) {
                            e._isRunningTask(f.id) && ("checking" === f.state && (f.state = "uploading"), f.loaded = t.loaded, f.size = t.total, f.speed = t.speed, f.percent = t.percent, p && p(t), c())
                        },
                        function () {
                            n[d] = f, t.push(f), f.size = i.FileSize, !s && c(), l(e), u()
                        }(), d
                }, e._isRunningTask = function (e) {
                    var t = n[e];
                    return !(!t || "checking" !== t.state && "uploading" !== t.state)
                }, e.getTaskList = function () {
                    return r.map(t, s)
                }, e.cancelTask = function (e) {
                    d(e, "canceled")
                }, e.pauseTask = function (e) {
                    d(e, "paused")
                }, e.restartTask = function (e) {
                    var t = n[e];
                    !t || "paused" !== t.state && "error" !== t.state || (t.state = "waiting", c(), a = Math.min(a, t.index), l())
                }
            };
        e.exports.transferToTaskMethod = i, e.exports.init = a
    }])
});
